On Wed, May 29, 2024 at 08:00:35PM +0200, Bernd Schubert wrote: > From: Bernd Schubert <bschubert@xxxxxxx> > > This adds support for uring communication between kernel and > userspace daemon using opcode the IORING_OP_URING_CMD. The basic > appraoch was taken from ublk. The patches are in RFC state, > some major changes are still to be expected. > > Motivation for these patches is all to increase fuse performance. > In fuse-over-io-uring requests avoid core switching (application > on core X, processing of fuse server on random core Y) and use > shared memory between kernel and userspace to transfer data. > Similar approaches have been taken by ZUFS and FUSE2, though > not over io-uring, but through ioctl IOs What specifically is it about io-uring that's helpful here? Besides the ringbuffer? So the original mess was that because we didn't have a generic ringbuffer, we had aio, tracing, and god knows what else all implementing their own special purpose ringbuffers (all with weird quirks of debatable or no usefulness). It seems to me that what fuse (and a lot of other things want) is just a clean simple easy to use generic ringbuffer for sending what-have-you back and forth between the kernel and userspace - in this case RPCs from the kernel to userspace. But instead, the solution seems to be just toss everything into a new giant subsystem?