aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2023-05-26 01:56:22 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2023-05-26 01:59:16 +0000
commit4b08a62ed441668c103f834f5fe756ece5a8d9b3 (patch)
tree393ed3372a878f21158ca559c46a0bdf9469e452
parent0f2bb40bc7ddee7ba329d9b344623e2a186b4046 (diff)
downloadsrc-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
-rw-r--r--sbin/fsck_ffs/main.c5
-rw-r--r--sbin/fsck_ffs/setup.c8
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)