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: b...@freebsd.org
          Reporter: asom...@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.
_______________________________________________
freebsd-bugs@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to