summaryrefslogtreecommitdiff
path: root/sbin/fsck/pass4.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/fsck/pass4.c')
-rw-r--r--sbin/fsck/pass4.c69
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);
}
}
}