fsck_ffs: fix background fsck in preen mode

Background checks are only allowed for mounted filesystems - don't try
to open the device for writing when performing a background check.

While here, remove a debugging printf that's commented out.

PR:             256746
Fixes:          5cc52631b3
Reviewed by:	mckusick
MFC After:      1 week
Differential Revision:	https://reviews.freebsd.org/D30880
This commit is contained in:
Robert Wing 2021-07-11 12:47:27 -08:00
parent 4488c8c34b
commit 0c5a59252c

View File

@ -295,15 +295,14 @@ checkfilesys(char *filesys)
*/ */
if ((fsreadfd = open(filesys, O_RDONLY)) < 0 || readsb(0) == 0) if ((fsreadfd = open(filesys, O_RDONLY)) < 0 || readsb(0) == 0)
exit(3); /* Cannot read superblock */ exit(3); /* Cannot read superblock */
if (nflag || (fswritefd = open(filesys, O_WRONLY)) < 0) { if (bkgrdflag == 0 &&
(nflag || (fswritefd = open(filesys, O_WRONLY)) < 0)) {
fswritefd = -1; fswritefd = -1;
if (preen) if (preen)
pfatal("NO WRITE ACCESS"); pfatal("NO WRITE ACCESS");
printf(" (NO WRITE)"); printf(" (NO WRITE)");
} }
if ((sblock.fs_flags & FS_GJOURNAL) != 0) { if ((sblock.fs_flags & FS_GJOURNAL) != 0) {
//printf("GJournaled file system detected on %s.\n",
// filesys);
if (sblock.fs_clean == 1) { if (sblock.fs_clean == 1) {
pwarn("FILE SYSTEM CLEAN; SKIPPING CHECKS\n"); pwarn("FILE SYSTEM CLEAN; SKIPPING CHECKS\n");
exit(0); exit(0);
@ -317,10 +316,10 @@ checkfilesys(char *filesys)
} else { } else {
pfatal( pfatal(
"UNEXPECTED INCONSISTENCY, CANNOT RUN FAST FSCK\n"); "UNEXPECTED INCONSISTENCY, CANNOT RUN FAST FSCK\n");
close(fsreadfd);
close(fswritefd);
} }
} }
close(fsreadfd);
close(fswritefd);
} }
/* /*
* If we are to do a background check: * If we are to do a background check: