diff options
Diffstat (limited to 'sbin/fsck_ffs/pass5.c')
-rw-r--r-- | sbin/fsck_ffs/pass5.c | 38 |
1 files changed, 9 insertions, 29 deletions
diff --git a/sbin/fsck_ffs/pass5.c b/sbin/fsck_ffs/pass5.c index f3994f8..d492a18 100644 --- a/sbin/fsck_ffs/pass5.c +++ b/sbin/fsck_ffs/pass5.c @@ -32,14 +32,11 @@ */ #ifndef lint -#if 0 static const char sccsid[] = "@(#)pass5.c 8.9 (Berkeley) 4/28/95"; -#endif -static const char rcsid[] = - "$Id: pass5.c,v 1.13 1998/08/04 09:19:03 phk Exp $"; #endif /* not lint */ #include <sys/param.h> +#include <sys/time.h> #include <ufs/ufs/dinode.h> #include <ufs/ffs/fs.h> @@ -52,7 +49,7 @@ static const char rcsid[] = void pass5() { - int c, blk, frags, basesize, sumsize, mapsize, savednrpos; + int c, blk, frags, basesize, sumsize, mapsize, savednrpos = 0; int inomapsize, blkmapsize; struct fs *fs = &sblock; struct cg *cg = &cgrp; @@ -66,7 +63,7 @@ pass5() register struct cg *newcg = (struct cg *)buf; struct ocg *ocg = (struct ocg *)buf; - statemap[WINO] = USTATE; + inoinfo(WINO)->ino_state = USTATE; memset(newcg, 0, (size_t)fs->fs_cgsize); newcg->cg_niblk = fs->fs_ipg; if (cvtlevel >= 3) { @@ -207,8 +204,8 @@ pass5() if (fs->fs_postblformat == FS_42POSTBLFMT) ocg->cg_magic = CG_MAGIC; j = fs->fs_ipg * c; - for (i = 0; i < fs->fs_ipg; j++, i++) { - switch (statemap[j]) { + for (i = 0; i < inostathead[c].il_numalloced; j++, i++) { + switch (inoinfo(j)->ino_state) { case USTATE: break; @@ -229,7 +226,7 @@ pass5() if (j < ROOTINO) break; errx(EEXIT, "BAD STATE %d FOR INODE I=%ld", - statemap[j], j); + inoinfo(j)->ino_state, j); } } if (c == 0) @@ -325,7 +322,7 @@ pass5() if (cg_inosused(cg)[i] & (1 << k)) continue; pwarn("ALLOCATED INODE %d MARKED FREE\n", - c * fs->fs_ipg + i * 8 + k); + c * fs->fs_ipg + i * NBBY + k); } } for (i = 0; i < blkmapsize; i++) { @@ -338,7 +335,7 @@ pass5() if (cg_blksfree(newcg)[i] & (1 << k)) continue; pwarn("ALLOCATED FRAG %d MARKED FREE\n", - c * fs->fs_fpg + i * 8 + k); + c * fs->fs_fpg + i * NBBY + k); } } } @@ -355,24 +352,7 @@ pass5() && dofix(&idesc[0], "FREE BLK COUNT(S) WRONG IN SUPERBLK")) { memmove(&fs->fs_cstotal, &cstotal, sizeof *cs); fs->fs_ronly = 0; + fs->fs_fmod = 0; sbdirty(); } - if (fs->fs_fmod != 0) { - pwarn("MODIFIED FLAG SET IN SUPERBLOCK"); - if (preen) - printf(" (FIXED)\n"); - if (preen || reply("FIX") == 1) { - fs->fs_fmod = 0; - sbdirty(); - } - } - if (fs->fs_clean == 0) { - pwarn("CLEAN FLAG NOT SET IN SUPERBLOCK"); - if (preen) - printf(" (FIXED)\n"); - if (preen || reply("FIX") == 1) { - fs->fs_clean = 1; - sbdirty(); - } - } } |