Hi,
If the block size is 64k, the first alternate ffs1 superblock ends up
in a location first looked at by dumpfs.
fsck_ffs(8) (see setup.c) and ffs_mountfs() in
sys/ufs/ffs/ffs_vfsops.c have protection against that case, since we
really want the primary superblock, that's the one that is actually
updated when a fs is used.
So also do that in dumpfs(8).
OK?
-Otto
Index: dumpfs.c
===================================================================
RCS file: /cvs/src/sbin/dumpfs/dumpfs.c,v
retrieving revision 1.34
diff -u -p -r1.34 dumpfs.c
--- dumpfs.c 28 Jun 2019 13:32:43 -0000 1.34
+++ dumpfs.c 16 Feb 2020 12:24:31 -0000
@@ -139,6 +139,8 @@ open_disk(const char *name)
if (n == SBLOCKSIZE && (afs.fs_magic == FS_UFS1_MAGIC ||
(afs.fs_magic == FS_UFS2_MAGIC &&
afs.fs_sblockloc == sbtry[i])) &&
+ !(afs.fs_magic == FS_UFS1_MAGIC &&
+ sbtry[i] == SBLOCK_UFS2) &&
afs.fs_bsize <= MAXBSIZE &&
afs.fs_bsize >= sizeof(struct fs))
break;