Bug 115951

Summary: FUSE creates deadlock together with /proc/mounts
Product: IO/Storage Reporter: Armin Schindler (armin)
Component: OtherAssignee: io_other
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 4.2 Subsystem:
Regression: No Bisected commit-id:

Description Armin Schindler 2016-04-06 13:43:11 UTC
FUSE based filesystems, when more than one is used at the same time, can create a deadlock. All FUSE processes and also other filesystem accesses result in D-state forever.

Reproducable with davfs2 version 1.5.2.
davfs2 uses a loop to select() for FUSE control. If select() returns with timeout, it checks the mounts by reading /proc/mounts.
 
When another FUSE process, like another davfs2 mount, is active with e.g. network, reading /proc/mounts is blocked (D-state). 
This can cause a situation where all FUSE processes block each other waiting for the other to finish.

Is FUSE holding any locks/mutexes when in user-space? 
Does reading from /proc/mounts lock the same?