'df' uninterruptible (kern_getfsstat -> vfs_busy -> sleep)

Peter Eriksson <[email protected]> Mon, 27 Jul 2026 15:17:11 +0200
Newsgroups gmane.os.freebsd.devel.file-systems
Message-ID <[email protected]>
I just noticed (FreeBSD 15.1) that it seems that df is uninterruptible =
in the kernel if vfs_busy() is waiting for some lock/sleeping.=20

Output from procstat:

54468 105116 df                  -                   mi_switch+0xbc =
_sleep+0x19e vfs_busy+0x203 kern_getfsstat+0x1e8 sys_getfsstat+0x22 =
amd64_syscall+0x126 fast_syscall_common+0xf8=20


I=E2=80=99m running a =E2=80=9Czpool destroy=E2=80=9D on a pretty large =
ZFS spool which is taking some time so it=E2=80=99s probably waiting for =
some internal lock, but I don=E2=80=99t see why df/kern_getfsstat has to =
uninterruptible?

(I originally did =E2=80=9Czfs destroy -t $POOL=E2=80=9D then after some =
time aborted that an run =E2=80=9Czpool destroy $POOL=E2=80=9D instead =
so there are probably a lot of internal zfs deletions running, =E2=80=9Czp=
ool get freeing $POOL=E2=80=9D gives that there are around 10TB being =
deleted.)

- Peter