git: 7ef56fb04984 - main - Avoid unnecessary setting of UFS flag requesting fsck(8) be run.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 10 Jan 2022 00:18:42 UTC
The branch main has been updated by mckusick:
URL: https://cgit.FreeBSD.org/src/commit/?id=7ef56fb0498461edf4bf4c482fd8bc6fa126e0e9
commit 7ef56fb0498461edf4bf4c482fd8bc6fa126e0e9
Author: Kirk McKusick <mckusick@FreeBSD.org>
AuthorDate: 2022-01-10 00:17:13 +0000
Commit: Kirk McKusick <mckusick@FreeBSD.org>
CommitDate: 2022-01-10 00:18:28 +0000
Avoid unnecessary setting of UFS flag requesting fsck(8) be run.
When the kernel is requested to mount a filesystem with a bad superblock
check hash, it would set the flag in the superblock requesting that the
fsck(8) program be run. The flag is only written to disk as part of a
superblock update. Since the superblock always has its check hash updated
when it is written to disk, the problem for which the flag has been set
will no longer exist. Hence, it is counter-productive to set the flag
as it will just cause an unnecessary run of fsck if it ever gets written.
Sponsored by: Netflix
---
sys/ufs/ffs/ffs_subr.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/sys/ufs/ffs/ffs_subr.c b/sys/ufs/ffs/ffs_subr.c
index a3b7035e6a96..45fc3aa2cb25 100644
--- a/sys/ufs/ffs/ffs_subr.c
+++ b/sys/ufs/ffs/ffs_subr.c
@@ -277,11 +277,8 @@ readsuper(void *devfd, struct fs **fsp, off_t sblockloc, int isaltsblk,
if (fs->fs_ckhash != (ckhash = ffs_calc_sbhash(fs))) {
if (chkhash == STDSB_NOMSG)
return (EINTEGRITY);
- if (chkhash == STDSB_NOHASHFAIL_NOMSG) {
- fs->fs_flags |= FS_NEEDSFSCK;
- fs->fs_fmod = 1;
+ if (chkhash == STDSB_NOHASHFAIL_NOMSG)
return (0);
- }
#ifdef _KERNEL
res = uprintf("Superblock check-hash failed: recorded "
"check-hash 0x%x != computed check-hash 0x%x%s\n",
@@ -303,8 +300,6 @@ readsuper(void *devfd, struct fs **fsp, off_t sblockloc, int isaltsblk,
if (chkhash == STDSB)
return (EINTEGRITY);
/* chkhash == STDSB_NOHASHFAIL */
- fs->fs_flags |= FS_NEEDSFSCK;
- fs->fs_fmod = 1;
return (0);
}
/* Have to set for old filesystems that predate this field */