[Bug 238565] panic: vinvalbuf: dirty bufs during unmount if clustered writes return errors
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Jun 14 18:05:44 UTC 2019
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238565
Bug ID: 238565
Summary: panic: vinvalbuf: dirty bufs during unmount if
clustered writes return errors
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Many People
Priority: ---
Component: kern
Assignee: bugs at FreeBSD.org
Reporter: asomers at FreeBSD.org
It seems that if a clustered write experiences an error while fsyncing during
unmount, vinvalbuf will panic. This only happens with clustered writes, not
normal writes. So far I've only been able to reproduce it on fusefs, but I
suspect that all file systems which use clustering (UFS, ext2, msdosfs, fusefs)
are affected. The problem is easiest to reproduce with fusefs just because
fuse makes it easy to inject errors at any point.
The panic can be reproduced on the projects/fuse2 branch by doing the
following:
$ sudo sysctl sysctl vfs.fusefs.data_cache_mode=2
$ cd /usr/tests/sys/fs/fusefs
$ ./write --gtest_also_run_disabled_tests
--gtest_filter=WriteCluster.DISABLED_cluster_write_err -v
fsync: giving up on dirty (error = 5) 0xfffff80049732960: tag fuse, type VREG
usecount 0, writecount 0, refcount 5
flags (VI_ACTIVE|VI_DOINGINACT)
v_object 0xfffff80049318900 ref 0 pages 48 cleanbuf 0 dirtybuf 3
lock type fuse: EXCL by thread 0xfffff8000337f5a0 (pid 3944, write, tid
100085)
nodeid: 42, parent nodeid: 0, nlookup: 1, flag: 0
panic: vinvalbuf: dirty bufs
cpuid = 0
time = 1560534385
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0031dd84c0
vpanic() at vpanic+0x19d/frame 0xfffffe0031dd8510
panic() at panic+0x43/frame 0xfffffe0031dd8570
bufobj_invalbuf() at bufobj_invalbuf+0x2ca/frame 0xfffffe0031dd85d0
vgonel() at vgonel+0x15e/frame 0xfffffe0031dd8640
vflush() at vflush+0x22c/frame 0xfffffe0031dd8790
fuse_vfsop_unmount() at fuse_vfsop_unmount+0xad/frame 0xfffffe0031dd8800
dounmount() at dounmount+0x4ae/frame 0xfffffe0031dd8860
sys_unmount() at sys_unmount+0x300/frame 0xfffffe0031dd8990
amd64_syscall() at amd64_syscall+0x276/frame 0xfffffe0031dd8ab0
fast_syscall_common() at fast_syscall_common+0x101/frame 0xfffffe0031dd8ab0
--- syscall (22, FreeBSD ELF64, sys_unmount), rip = 0x80052d9aa, rsp =
0x7fffffffe6e8, rbp = 0x7fffffffe700 ---
KDB: enter: panic
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list