SCCS-vsn: sbin/fsck/main.c 1.15
SCCS-vsn: sbin/icheck/icheck.c 1.11
-static char *sccsid = "@(#)main.c 1.14 (Berkeley) %G%";
+static char *sccsid = "@(#)main.c 1.15 (Berkeley) %G%";
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
- if (imax - n_files != sblock.fs_cstotal.cs_nifree) {
+ if (imax - ROOTINO - n_files != sblock.fs_cstotal.cs_nifree) {
pwarn("FREE INODE COUNT WRONG IN SUPERBLK");
if (preen)
printf(" (FIXED)\n");
pwarn("FREE INODE COUNT WRONG IN SUPERBLK");
if (preen)
printf(" (FIXED)\n");
{ badsb("BLKNO CORRUPTED"); return (0); }
if (sblock.fs_spc != sblock.fs_nsect * sblock.fs_ntrak)
{ badsb("SPC DOES NOT JIVE w/NTRAK*NSECT"); return (0); }
{ badsb("BLKNO CORRUPTED"); return (0); }
if (sblock.fs_spc != sblock.fs_nsect * sblock.fs_ntrak)
{ badsb("SPC DOES NOT JIVE w/NTRAK*NSECT"); return (0); }
- if (sblock.fs_cgsize != cgsize(&sblock))
+ if (sblock.fs_cgsize !=
+ sizeof(struct cg) + howmany(sblock.fs_fpg, NBBY))
{ badsb("CGSIZE INCORRECT"); return (0); }
if (sblock.fs_cssize != sblock.fs_ncg * sizeof(struct csum))
{ badsb("CSSIZE INCORRECT"); return (0); }
{ badsb("CGSIZE INCORRECT"); return (0); }
if (sblock.fs_cssize != sblock.fs_ncg * sizeof(struct csum))
{ badsb("CSSIZE INCORRECT"); return (0); }
+ if (inum < ROOTINO || inum > imax)
return (NULL);
if (inum < startinum || inum >= startinum + INOPB(&sblock)) {
iblk = itod(inum, &sblock);
return (NULL);
if (inum < startinum || inum >= startinum + INOPB(&sblock)) {
iblk = itod(inum, &sblock);
-static char *sccsid = "@(#)icheck.c 1.10 (Berkeley) %G%";
+static char *sccsid = "@(#)icheck.c 1.11 (Berkeley) %G%";
clrbit(cgrp.cg_iused, i);
i++;
}
clrbit(cgrp.cg_iused, i);
i++;
}
+ if (c == 0)
+ for (i = 0; i < ROOTINO; i++) {
+ setbit(cgrp.cg_iused, i);
+ cgrp.cg_cs.cs_nifree--;
+ }
for (s = 0; s < MAXCPG; s++)
for (i = 0; i < NRPOS; i++)
cgrp.cg_b[s][i] = 0;
for (s = 0; s < MAXCPG; s++)
for (i = 0; i < NRPOS; i++)
cgrp.cg_b[s][i] = 0;