On Tue, Jul 22, 2025 at 08:00:00AM -0400, Brian Song wrote: > 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 '_'
Then "-" is fine, but please use "io<separator>uring" so it is as close as possible (not "uring", "iouring", etc). Thanks, Stefan > > > >> > >> 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 > >> >
signature.asc
Description: PGP signature