t why is it also responsible for allocating buffers? What I'd do: 1. Strip buffer allocation from IORING_REGISTER_KMBUF_RING. 2. Replace *_REGISTER_KMBUF_RING with *_REGISTER_PBUF_RING + a new flag. Or maybe don't expose it to the user at all and create it from fuse via internal API. 3. Require the user to register a memory region of appropriate size, see IORING_REGISTER_MEM_REGION, ctx->param_region. Make fuse populating the buffer ring using the memory region. I wanted to make regions shareable anyway (need it for other purposes), I can toss patches for that tomorrow. A separate question is whether extending buffer rings is the right approach as it seems like you're only using it for fuse requests and not for passing buffers to normal requests, but I don't see the big picture here. io_region_get_ptr() With io_create_region_multi_buf() gone, you shouldn't need to align every buffer, that could be a lot of wasted memory (thinking about 64KB pages). -- Pavel Begunkov[PATCH v1 03/11] io_uring/kbuf: add support for kernel-managed buffer ringsPavel Begunkov undefinedJoanne Koong , axboe@kernel.dk, io-uring@vger.kernel.org undefined undefined undefined undefined undefined undefined undefined undefined‹~…ń9