diff options
-rw-r--r-- | doc/README.fuse-io-uring | 38 | ||||
-rw-r--r-- | lib/fuse_uring.c | 3 |
2 files changed, 39 insertions, 2 deletions
diff --git a/doc/README.fuse-io-uring b/doc/README.fuse-io-uring new file mode 100644 index 0000000..7207c6e --- /dev/null +++ b/doc/README.fuse-io-uring @@ -0,0 +1,38 @@ +fuse-over-io-uring uses io-uring for transport of kernel/userspace +messages. See also https://docs.kernel.org/filesystems/fuse-io-uring.html + +In order to enable it, the kernel module needs to have it enabled: +echo 1 > /sys/module/fuse/parameters/enable_uring + +Additionally, FUSE_CAP_OVER_IO_URING needs to be set and +se->uring.enable has to be true. The latter can be +achieved with the libfuse option '-oio_uring'. + +Default queue-depth is 8 and can be changed with the parameter +'-oio_uring_q_depth'. + +As of now there is always one queue per core. A reduced number +of cores in development. + +Benefits: +- Improved performance by using io_uring for kernel/userspace communication +- Reduced system call overhead compared to traditional FUSE +- Asynchronous I/O operations + +Usage: +To enable io_uring support when mounting a FUSE filesystem: +1. Enable kernel support: echo 1 > /sys/module/fuse/parameters/enable_uring +2. Mount with io_uring option: -oio_uring +3. Optionally adjust queue depth: -oio_uring_q_depth=<depth> + +Example: +./my_fuse_fs /source /mountpoint -oio_uring -oio_uring_q_depth=16 + +Requirements: +- Linux kernel with io_uring and FUSE io_uring support enabled +- libfuse compiled with io_uring support + +Build Dependencies: +- liburing (for io_uring support) +- libnuma (required alongside liburing) +- meson build system with option: -Denable-io-uring=true diff --git a/lib/fuse_uring.c b/lib/fuse_uring.c index 55d68fa..62c5a4d 100644 --- a/lib/fuse_uring.c +++ b/lib/fuse_uring.c @@ -2,8 +2,7 @@ * FUSE: Filesystem in Userspace * Copyright (C) 2025 Bernd Schubert <bschubert@ddn.com> * - * Implementation of (most of) the low-level FUSE API. The session loop - * functions are implemented in separate files. + * Implementation of (most of) FUSE-over-io-uring. * * This program can be distributed under the terms of the GNU LGPLv2. * See the file COPYING.LIB |