Public bug reported: Hello up there,
We were reported about a deadlock in the kernel while using a FUSE-based filesystem on Ubuntu. The kernel in question is Ubuntu-hwe-4.15.0-47.50~16.04.1 from Xenial/HWE. We tracked this bug to the fact that 4.15.x kernel in Ubuntu does not include the following patch, in despite the patch being marked as needed for v4.7+ stable kernels: https://git.kernel.org/linus/63576c13bd Please see the following go-fuse issue for full details: https://github.com/hanwen/go-fuse/issues/281#issuecomment-480008562 The bug is potentially applicable to libfuse users too since libfuse by default enables parallel dirops whenever kernel claims support for it, which libfuse maintained confirmed: https://github.com/hanwen/go-fuse/issues/281#issuecomment-480013202 https://github.com/hanwen/go-fuse/issues/281#issuecomment-480510381 We tested that cherry-picking 63576c13bd into 4.15.x series makes the problem go away: https://github.com/hanwen/go-fuse/issues/281#issuecomment-480499969 So please include https://git.kernel.org/linus/63576c13bd into Ubuntu 4.15.x kernel series which are bionic/master and xenial/hwe, and which currently don't have this patch. -------- Here is a full list of FUSE patches marked to be needed in stable kernels starting from v4.15: kirr@deco:~/src/linux/linux$ git log --oneline v4.15..v5.1-rc3 --grep="stable@" -- fs/fuse/ a2ebba824106 fuse: decrement NR_WRITEBACK_TEMP on the right page 9509941e9c53 fuse: call pipe_buf_release() under pipe lock 8a3177db59cd cuse: fix ioctl 97e1532ef81a fuse: handle zero sized retrieve correctly 2e64ff154ce6 fuse: continue to send FUSE_RELEASEDIR when FUSE_OPEN returns ENOSYS ebacb8127359 fuse: fix use-after-free in fuse_direct_IO() 2d84a2d19b61 fuse: fix possibly missed wake-up after abort 7fabaf303458 fuse: fix leaked notify reply 908a572b80f6 fuse: fix blocked_waitq wakeup 4c316f2f3ff3 fuse: set FR_SENT while locked d2d2d4fb1f54 fuse: Fix use-after-free in fuse_dev_do_write() bc78abbd55dd fuse: Fix use-after-free in fuse_dev_do_read() a2477b0e67c5 fuse: Don't access pipe->buffers without pipe_lock() 63576c13bd17 fuse: fix initial parallel dirops e8f3bd773d22 fuse: Fix oops at process_init_reply() b8f95e5d13f5 fuse: umount should wait for all requests 45ff350bbd9d fuse: fix unlocked access to processing queue 87114373ea50 fuse: fix double request_end() 543b8f8662fe (tag: fuse-update-4.18) fuse: don't keep dead fuse_conn at fuse_fill_super(). 6becdb601bae fuse: fix control dir setup and teardown 8a301eb16d99 fuse: fix congested state leak on aborted connections df0e91d48827 fuse: atomic_o_trunc should truncate pagecache Among those only 8a3177db59cd and 2d84a2d19b61 should not be applied to 4.15.x becuase they cure a problem introduced in a later kernel (please see got log without --oneline for stable@ details) However both bionic and xenial/hwe has much less fuse patches applied: kirr@deco:~/src/linux/linux$ git log --oneline v4.15..bionic/master -- fs/fuse/ e992e3521885 fuse: fix control dir setup and teardown f3a3e0537dcd fuse: don't keep dead fuse_conn at fuse_fill_super(). 840c77082f93 fuse: atomic_o_trunc should truncate pagecache c0e31b214498 fuse: fix congested state leak on aborted connections 45f23c59120f UBUNTU: SAUCE: (namespace) fuse: Allow user namespace mounts 1223588451c6 UBUNTU: SAUCE: (namespace) fuse: Restrict allow_other to the superblock's namespace or a descendant b4d1889491a0 UBUNTU: SAUCE: (namespace) fuse: Support fuse filesystems outside of init_user_ns kirr@deco:~/src/linux/linux$ git log --oneline v4.15..xenial/hwe -- fs/fuse/ e992e3521885 fuse: fix control dir setup and teardown f3a3e0537dcd fuse: don't keep dead fuse_conn at fuse_fill_super(). 840c77082f93 fuse: atomic_o_trunc should truncate pagecache c0e31b214498 fuse: fix congested state leak on aborted connections 45f23c59120f UBUNTU: SAUCE: (namespace) fuse: Allow user namespace mounts 1223588451c6 UBUNTU: SAUCE: (namespace) fuse: Restrict allow_other to the superblock's namespace or a descendant b4d1889491a0 UBUNTU: SAUCE: (namespace) fuse: Support fuse filesystems outside of init_user_ns which suggests that other FUSE fixes should be cherry-picked too. Please consider cherry-picking those additional patches too. They are all in upstream kernel stable series, e.g. stable/linux-4.14.y has them: kirr@deco:~/src/linux/linux$ git log --oneline v4.14..stable/linux-4.14.y -- fs/fuse/ 266a69895b89 fuse: handle zero sized retrieve correctly b928e93d864c fuse: decrement NR_WRITEBACK_TEMP on the right page 65f222bb370e fuse: call pipe_buf_release() under pipe lock c1149b873482 fuse: continue to send FUSE_RELEASEDIR when FUSE_OPEN returns ENOSYS 6ceec07cc84a fuse: fix leaked notify reply a42d933dc281 fuse: fix use-after-free in fuse_direct_IO() 78da72ee42d8 fuse: set FR_SENT while locked f6f21a2b70c6 fuse: fix blocked_waitq wakeup ab962e91008a fuse: Fix use-after-free in fuse_dev_do_write() d94b3a2375cb fuse: Fix use-after-free in fuse_dev_do_read() e8a3f3a03655 fuse: Add missed unlock_page() to fuse_readpages_fill() ff4a71855d0a fuse: Fix oops at process_init_reply() 973206923812 fuse: umount should wait for all requests fc17d7519e8e fuse: fix unlocked access to processing queue cfb6eca6e4bb fuse: fix double request_end() 7d392674443c fuse: fix initial parallel dirops eaebcf902ae0 fuse: Don't access pipe->buffers without pipe_lock() 69829f749a43 fuse: fix control dir setup and teardown 3a37d85a90da fuse: don't keep dead fuse_conn at fuse_fill_super(). 2f7bf369b5f8 fuse: atomic_o_trunc should truncate pagecache 02832578eb9d fuse: fix congested state leak on aborted connections and it is just that stable/linux-4.15.y stopped being maintained by Greg KH. Thanks beforehand, Kirill ** Affects: linux (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1823972 Title: bionic, xenial/hwe: misses "fuse: fix initial parallel dirops" patch To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1823972/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs