My earlier report made me question my fstab(5) contents because
filesystems mounted with "softdep" would not have the SOFTDEP flag
printed in ddb(4)'s `show all mounts' output.
Turns out ddb simply ignores the bit, but I'd argue using softdep or not
can be important information, so add it accordingly.
Here's a test snapshot VM with a single filesystem using softdep and
showing mounts in the debugger:
test# mount
/dev/sd0a on / type ffs (local, wxallowed, softdep)
test# sysctl ddb.trigger=1
Stopped at db_enter+0x10: popq %rbp
ddb> show all mounts
mountpoint 0xffff8000000d1000
flags 4205800<WXALLOWED,LOCAL,ROOTFS>
vnodecovered 0x0 syncer 0xfffffd801eef1d38 data 0xffff800000087c00
vfsconf: ops 0xffffffff8202a960 name "ffs" num 1 ref 1 flags 0x201000
statvfs cache: bsize 800 iosize 4000
blocks 497095 free 84822 avail 59968
files 129598 ffiles 115439 favail 115439
f_fsidx {0x400, 0xe9b63a57} owner 0 ctime 0x606a31a6
syncwrites 58 asyncwrites = 1436
syncreads 22635 asyncreads = 0
fstype "ffs" mnton "/" mntfrom "/dev/sd0a" mntspec "5778912438e27f1e.a"
locked vnodes:
ddb> continue
ddb.trigger: 0 -> 1
Same VM/filesystem with patched kernel:
ddb> show all mounts
mountpoint 0xffff8000000c8000
flags 4205800<WXALLOWED,LOCAL,ROOTFS,SOFTDEP>
vnodecovered 0x0 syncer 0xfffffd801f247a98 data 0xffff800000087800
vfsconf: ops 0xffffffff812ec530 name "ffs" num 1 ref 1 flags 0x201000
statvfs cache: bsize 800 iosize 4000
blocks 497095 free 84770 avail 59916
files 129598 ffiles 115439 favail 115439
f_fsidx {0x400, 0xe9b63a57} owner 0 ctime 0x606a341c
syncwrites 59 asyncwrites = 179
syncreads 13048 asyncreads = 0
fstype "ffs" mnton "/" mntfrom "/dev/sd0a" mntspec "5778912438e27f1e.a"
locked vnodes:
>From CVS history this looks like mickey simply overlooked SOFTDEP when
adding the "flags ..." output with
sys/sys/mount.h revision 1.75
sys/kern/vfs_subr.c revision 1.133
date: 2006/07/11 21:17:58; author: mickey; state: Exp; lines: +126
-1;
add mount/vnode/buf and softdep printing commands; tested on a few
archs and will make pedro happy too (;
Use tabs not spaces while here (nicely pulling the relevant bits into
diff context).
Feedback? OK?
Index: sys/mount.h
===================================================================
RCS file: /cvs/src/sys/sys/mount.h,v
retrieving revision 1.147
diff -u -p -r1.147 mount.h
--- sys/mount.h 18 Jan 2020 08:40:19 -0000 1.147
+++ sys/mount.h 4 Apr 2021 21:28:33 -0000
@@ -387,7 +387,7 @@ struct mount {
#define MNT_BITS \
"\20\001RDONLY\002SYNCHRONOUS\003NOEXEC\004NOSUID\005NODEV\006NOPERM" \
"\007ASYNC\010EXRDONLY\011EXPORTED\012DEFEXPORTED\013EXPORTANON" \
- "\014WXALLOWED\015LOCAL\016QUOTA\017ROOTFS\020NOATIME"
+ "\014WXALLOWED\015LOCAL\016QUOTA\017ROOTFS\020NOATIME\033SOFTDEP"
/*
* filesystem control flags.
@@ -399,7 +399,7 @@ struct mount {
#define MNT_STALLED 0x00100000 /* filesystem stalled */
#define MNT_SWAPPABLE 0x00200000 /* filesystem can be used for
swap */
#define MNT_WANTRDWR 0x02000000 /* want upgrade to read/write */
-#define MNT_SOFTDEP 0x04000000 /* soft dependencies being done */
+#define MNT_SOFTDEP 0x04000000 /* soft dependencies being done */
#define MNT_DOOMED 0x08000000 /* device behind filesystem is gone */
#ifdef _KERNEL