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 <asml.silence@gmail.com> undefinedJoanne Koong <joannelkoong@gmail.com>, axboe@kernel.dk, io-uring@vger.kernel.org undefined undefined undefined undefined undefined undefined undefined undefined‹~…ń9	