[Bug 269341] [msdosfs] deadlock with sendfile

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 05 Feb 2023 16:17:54 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269341

            Bug ID: 269341
           Summary: [msdosfs] deadlock with sendfile
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: asomers@FreeBSD.org

I can reliably reproduce a deadlock on msdosfs in sendfile(2).  I can't
reproduce it on tmpfs, nfs, ZFS, UFS, or bfffs (a fusefs file system). 
However, another user reported a similar hang in a different fuse file system
(PR #246886).

Stack trace of the hung process:
getblkx+0x67
breadn_flags+0x44
vfs_bio_getpages+0x354
msdosfs_getpages+0x3b
vop_stdgetpages_async+0x49
vnode_pager_getpages_async+0x43
sendfile_swapin+0x570
vn_sendfile+0x9ba
sendfile+0x117
amd64_syscall+0x12e
fast_syscall_common+0xf8 

Steps to Reproduce:
1) git clone git@github.com:asomers/fsx-rs.git
2) cd fsx-rs
3) git checkout 6882003d89fefb1f815c57c2f027f8ddefe83b58
4) truncate -s 1g /tmp/msdosfs.img
5) newfs_msdos /tmp/msdosfs.img
6) sudo mdconfig -a -t vnode -f /tmp/msdosfs.img
7) mkdir /tmp/msdos
8) sudo mount -t msdos /dev/md0 /tmp/msdos
9) env RUST_LOG=debug cargo run -- -f fsx.toml -N 1000 -P /tmp -S
6953641379939875300 /tmp/msdos/fsx.bin

-- 
You are receiving this mail because:
You are the assignee for the bug.