mirror of https://github.com/torvalds/linux.git
When mounting a user-space filesystem using io_uring, the initialization
of the rings is done separately in the server side. If for some reason
(e.g. a server bug) this step is not performed it will be impossible to
unmount the filesystem if there are already requests waiting.
This issue is easily reproduced with the libfuse passthrough_ll example,
if the queue depth is set to '0' and a request is queued before trying to
unmount the filesystem. When trying to force the unmount, fuse_abort_conn()
will try to wake up all tasks waiting in fc->blocked_waitq, but because the
rings were never initialized, fuse_uring_ready() will never return 'true'.
Fixes:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| acl.c | ||
| control.c | ||
| cuse.c | ||
| dax.c | ||
| dev.c | ||
| dev_uring.c | ||
| dev_uring_i.h | ||
| dir.c | ||
| file.c | ||
| fuse_dev_i.h | ||
| fuse_i.h | ||
| fuse_trace.h | ||
| inode.c | ||
| ioctl.c | ||
| iomode.c | ||
| passthrough.c | ||
| readdir.c | ||
| sysctl.c | ||
| virtio_fs.c | ||
| xattr.c | ||