On 7/20/25 12:13 PM, Stefan Hajnoczi wrote: > On Wed, Jul 16, 2025 at 02:38:23PM -0400, Brian Song wrote: >> This RFC patch represents an initial implementation of the FUSE-over- >> io_uring Exports idea proposed for Google Summer of Code (2025) under >> the QEMU community: >> https://wiki.qemu.org/Google_Summer_of_Code_2025#FUSE-over-io_uring_exports >> >> The implementation approach is primarily borrowed from how libfuse >> interacts with the kernel. >> >> FUSE-over-io_uring (https://docs.kernel.org/next/filesystems/fuse-io- >> uring.html) has been officially merged into the Linux kernel. The idea >> is to replace the traditional /dev/fuse based communication with a more >> efficient io_uring-based approach. In this model, userspace registers >> io_uring SQEs via the FUSE_IO_URING_CMD_REGISTER opcode, and then waits >> for the kernel to forward FUSE requests as CQEs. These are processed by >> the FUSE exports implementation in userspace and then committed back to >> the kernel using FUSE_IO_URING_CMD_COMMIT_AND_FETCH. >> >> To enable this feature in qemu-export-daemon, simply add the uring=on >> option to the export configuration. > > For consistency with the --blockdev file,aio=io_uring option, please > name it "io_uring=on" instead of "uring=on". >
It seems we are not allowed to use '_' here. In file included from ../storage-daemon/qapi/qapi-schema.json:57: ../storage-daemon/qapi/../../qapi/block-export.json: In struct 'BlockExportOptionsFuse': ../storage-daemon/qapi/../../qapi/block-export.json:191: name of 'data' member '*io_uring' must not use uppercase or '_' >> >> As this patch is still in the RFC stage, it currently supports **only >> single thread**. Due to protocol requirements in FUSE-over-io_uring, >> the number of FUSE threads must match the number of CPUs. Therefore, >> this initial version only works on single-core VMs (i.e., QEMU started >> with -smp 1) or single core machine. >> >> Brian Song (1): >> block/export: FUSE-over-io_uring Support for QEMU FUSE Exports >> >> block/export/fuse.c | 423 +++++++++++++++++++++++++-- >> docs/tools/qemu-storage-daemon.rst | 10 +- >> qapi/block-export.json | 6 +- >> storage-daemon/qemu-storage-daemon.c | 1 + >> util/fdmon-io_uring.c | 5 +- >> 5 files changed, 420 insertions(+), 25 deletions(-) >> >> -- >> 2.50.1 >>