diff options
Diffstat (limited to 'sbin/fsck/pass4.c')
-rw-r--r-- | sbin/fsck/pass4.c | 69 |
1 files changed, 31 insertions, 38 deletions
diff --git a/sbin/fsck/pass4.c b/sbin/fsck/pass4.c index 77b03ee0de81e..b2f1fe9ff00be 100644 --- a/sbin/fsck/pass4.c +++ b/sbin/fsck/pass4.c @@ -36,13 +36,12 @@ static const char sccsid[] = "@(#)pass4.c 8.4 (Berkeley) 4/28/95"; #endif static const char rcsid[] = - "$Id: pass4.c,v 1.4 1998/06/15 07:07:19 charnier Exp $"; + "$Id$"; #endif /* not lint */ #include <sys/param.h> #include <ufs/ufs/dinode.h> -#include <ufs/ffs/fs.h> #include <err.h> #include <string.h> @@ -56,27 +55,22 @@ pass4() register struct zlncnt *zlnp; struct dinode *dp; struct inodesc idesc; - int i, n, cg; + int n; memset(&idesc, 0, sizeof(struct inodesc)); idesc.id_type = ADDR; idesc.id_func = pass4check; - for (cg = 0; cg < sblock.fs_ncg; cg++) { - inumber = cg * sblock.fs_ipg; - for (i = 0; i < inostathead[cg].il_numalloced; i++, inumber++) { - if (inumber < ROOTINO) - continue; - idesc.id_number = inumber; - switch (inoinfo(inumber)->ino_state) { + for (inumber = ROOTINO; inumber <= lastino; inumber++) { + idesc.id_number = inumber; + switch (statemap[inumber]) { - case FSTATE: - case DFOUND: - n = inoinfo(inumber)->ino_linkcnt; - if (n) { - adjust(&idesc, (short)n); - break; - } - for (zlnp = zlnhead; zlnp; zlnp = zlnp->next) { + case FSTATE: + case DFOUND: + n = lncntp[inumber]; + if (n) + adjust(&idesc, (short)n); + else { + for (zlnp = zlnhead; zlnp; zlnp = zlnp->next) if (zlnp->zlncnt == inumber) { zlnp->zlncnt = zlnhead->zlncnt; zlnp = zlnhead; @@ -85,31 +79,30 @@ pass4() clri(&idesc, "UNREF", 1); break; } - } - break; + } + break; - case DSTATE: - clri(&idesc, "UNREF", 1); - break; + case DSTATE: + clri(&idesc, "UNREF", 1); + break; - case DCLEAR: - dp = ginode(inumber); - if (dp->di_size == 0) { - clri(&idesc, "ZERO LENGTH", 1); - break; - } - /* fall through */ - case FCLEAR: - clri(&idesc, "BAD/DUP", 1); + case DCLEAR: + dp = ginode(inumber); + if (dp->di_size == 0) { + clri(&idesc, "ZERO LENGTH", 1); break; + } + /* fall through */ + case FCLEAR: + clri(&idesc, "BAD/DUP", 1); + break; - case USTATE: - break; + case USTATE: + break; - default: - errx(EEXIT, "BAD STATE %d FOR INODE I=%d", - inoinfo(inumber)->ino_state, inumber); - } + default: + errx(EEXIT, "BAD STATE %d FOR INODE I=%d", + statemap[inumber], inumber); } } } |