diff options
author | Julian Elischer <julian@FreeBSD.org> | 1998-03-08 09:59:44 +0000 |
---|---|---|
committer | Julian Elischer <julian@FreeBSD.org> | 1998-03-08 09:59:44 +0000 |
commit | b1897c197c06ebd09ab26a462489bd331c96ce2e (patch) | |
tree | b85bc47a8c7d86c53fcbbd6d7f7c531569f43a1f /sbin/fsck_ifs/pass2.c | |
parent | fe80c56322a7dd0412230051cb1b7a0a66a74b74 (diff) | |
download | src-b1897c197c06ebd09ab26a462489bd331c96ce2e.tar.gz src-b1897c197c06ebd09ab26a462489bd331c96ce2e.zip |
Reviewed by: dyson@freebsd.org (john Dyson), dg@root.com (david greenman)
Submitted by: Kirk McKusick (mcKusick@mckusick.com)
Obtained from: WHistle development tree
Notes
Notes:
svn path=/head/; revision=34266
Diffstat (limited to 'sbin/fsck_ifs/pass2.c')
-rw-r--r-- | sbin/fsck_ifs/pass2.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/sbin/fsck_ifs/pass2.c b/sbin/fsck_ifs/pass2.c index 445f6f1682b9..ebc33b8a650f 100644 --- a/sbin/fsck_ifs/pass2.c +++ b/sbin/fsck_ifs/pass2.c @@ -66,8 +66,10 @@ pass2() case USTATE: pfatal("ROOT INODE UNALLOCATED"); - if (reply("ALLOCATE") == 0) + if (reply("ALLOCATE") == 0) { + ckfini(0); exit(EEXIT); + } if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO) errx(EEXIT, "CANNOT ALLOCATE ROOT INODE"); break; @@ -80,8 +82,10 @@ pass2() errx(EEXIT, "CANNOT ALLOCATE ROOT INODE"); break; } - if (reply("CONTINUE") == 0) + if (reply("CONTINUE") == 0) { + ckfini(0); exit(EEXIT); + } break; case FSTATE: @@ -93,8 +97,10 @@ pass2() errx(EEXIT, "CANNOT ALLOCATE ROOT INODE"); break; } - if (reply("FIX") == 0) + if (reply("FIX") == 0) { + ckfini(0); exit(EEXIT); + } dp = ginode(ROOTINO); dp->di_mode &= ~IFMT; dp->di_mode |= IFDIR; @@ -139,8 +145,14 @@ pass2() } } else if ((inp->i_isize & (DIRBLKSIZ - 1)) != 0) { getpathname(pathbuf, inp->i_number, inp->i_number); - pwarn("DIRECTORY %s: LENGTH %d NOT MULTIPLE OF %d", - pathbuf, inp->i_isize, DIRBLKSIZ); + if (usedsoftdep) + pfatal("%s %s: LENGTH %d NOT MULTIPLE OF %d", + "DIRECTORY", pathbuf, inp->i_isize, + DIRBLKSIZ); + else + pwarn("%s %s: LENGTH %d NOT MULTIPLE OF %d", + "DIRECTORY", pathbuf, inp->i_isize, + DIRBLKSIZ); if (preen) printf(" (ADJUSTED)\n"); inp->i_isize = roundup(inp->i_isize, DIRBLKSIZ); @@ -394,7 +406,7 @@ again: break; if (statemap[dirp->d_ino] == FCLEAR) errmsg = "DUP/BAD"; - else if (!preen) + else if (!preen && !usedsoftdep) errmsg = "ZERO LENGTH DIRECTORY"; else { n = 1; @@ -423,8 +435,11 @@ again: pwarn("%s %s %s\n", pathbuf, "IS AN EXTRANEOUS HARD LINK TO DIRECTORY", namebuf); - if (preen) - printf(" (IGNORED)\n"); + if (preen) { + printf(" (REMOVED)\n"); + n = 1; + break; + } else if ((n = reply("REMOVE")) == 1) break; } |