diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 2023-05-26 01:56:22 +0000 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 2023-05-26 01:59:16 +0000 |
commit | 4b08a62ed441668c103f834f5fe756ece5a8d9b3 (patch) | |
tree | 393ed3372a878f21158ca559c46a0bdf9469e452 /sbin | |
parent | 0f2bb40bc7ddee7ba329d9b344623e2a186b4046 (diff) | |
download | src-4b08a62ed441668c103f834f5fe756ece5a8d9b3.tar.gz src-4b08a62ed441668c103f834f5fe756ece5a8d9b3.zip |
When running fsck_ffs(8) in background ensure that a superblock has been read.
Reported by: Mikhail T.
PR: 271352
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/fsck_ffs/main.c | 5 | ||||
-rw-r--r-- | sbin/fsck_ffs/setup.c | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/sbin/fsck_ffs/main.c b/sbin/fsck_ffs/main.c index 566fbe5ccd15..60a542785541 100644 --- a/sbin/fsck_ffs/main.c +++ b/sbin/fsck_ffs/main.c @@ -711,7 +711,10 @@ setup_bkgrdchk(struct statfs *mntp, int sbreadfailed, char **filesys) } free(sblock.fs_csp); free(sblock.fs_si); - havesb = 0; + if (readsb() == 0) { + pwarn("CANNOT READ SNAPSHOT SUPERBLOCK\n"); + return (0); + } *filesys = snapname; cmd.version = FFS_CMD_VERSION; cmd.handle = fsreadfd; diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c index 1d62a733c2f6..fbcf069c9c97 100644 --- a/sbin/fsck_ffs/setup.c +++ b/sbin/fsck_ffs/setup.c @@ -88,8 +88,12 @@ setup(char *dev) * We are expected to have an open file descriptor and a superblock. */ if (fsreadfd < 0 || havesb == 0) { - if (debug) - printf("setup: bad fsreadfd or missing superblock\n"); + if (debug) { + if (fsreadfd < 0) + printf("setup: missing fsreadfd\n"); + else + printf("setup: missing superblock\n"); + } return (0); } if (preen == 0) |