aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Schubert <bschubert@ddn.com>2025-04-28 21:47:27 +0200
committerBernd Schubert <bernd@bsbernd.com>2025-04-28 22:51:28 +0200
commite122b3faf365df72ca397b8ed88e7dcff8789cca (patch)
treee5614e8f13f74407bab85513631c2a127f5f5a0e
parente70f91cb6387a4e14e7a4a4ebe9dc1100cbc1126 (diff)
downloadlibfuse-e122b3faf365df72ca397b8ed88e7dcff8789cca.tar.gz
Add a README for fuse-over-io-uring
Also update the comment description of fuse_uring.c Signed-off-by: Bernd Schubert <bschubert@ddn.com>
-rw-r--r--doc/README.fuse-io-uring38
-rw-r--r--lib/fuse_uring.c3
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