Bug 115971
Summary: | fuse blocks umount(8) indefinitely | ||
---|---|---|---|
Product: | File System | Reporter: | Werner Baumann (werner.baumann) |
Component: | Other | Assignee: | fs_other |
Status: | NEW --- | ||
Severity: | normal | ||
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 3.16 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Attachments: |
Tracing syscalls of umount when user space file system does not respond
Tracing syscalls of umount when user space file system is dead |
Description
Werner Baumann
2016-04-06 19:16:27 UTC
Created attachment 212031 [details]
Tracing syscalls of umount when user space file system does not respond
Created attachment 212041 [details]
Tracing syscalls of umount when user space file system is dead
I have added two syscall traces of umount that show where unmounting fails. umount issues lstat for the mountpoint (probably trying to canonicalize the file name of the mountpoint). - If the user space file system is still running and holds /dev/fuse open, fuse will send upcall FUSE_GETATTR. User space does not respond and lstat and mount hang forever. - If the user space file system is dead and /dev/fuse is closed, fuse will return error ENOTCONN and umount terminates with an error. Additional remark: davfs2 can use the coda kernel module instead of fuse. With coda the problem does not exist. Probably coda caches enough information about the mountpoint (the root of the file system) to answer lstat without upcall to the userspace. Werner |