Re: [PATCH v7 0/6] fuse: add io-uring buffer pools and zero-copy

Joanne Koong <[email protected]>
Newsgroups dev.linux.lists.fuse-devel
Message-ID <CAJnrk1YfMEoYAp597=jhPzezd2VN5t+hc-7OE6Bam-dibGbi+g@mail.gmail.com>
On Fri, Aug 14, 2026 at 12:00 PM Joanne Koong <[email protected]> wrote:
>
> This series implements fuse io-uring buffer pools and zero-copy.

Hi Miklos,

This series is ready for the upcoming merge window. Bernd reviewed v6
[1] this week and v7 addresses his comments/preferences.

The 4 io-uring patches this series depends on are queued in Jens's
for-7.2/io_uring-fuse branch [2]. There are no changes to these
io-uring patches. There will be a merge conflict when you pull the 2nd
patch "split io_buffer_register_request() logic":

diff --cc io_uring/rsrc.c
index 40807994a8f4,666d3a009ffc..000000000000
--- a/io_uring/rsrc.c
+++ b/io_uring/rsrc.c
@@@ -1057,15 -998,7 +1086,19 @@@ int io_buffer_register_request(struct i
                goto unlock;
        }

++<<<<<<< HEAD
 +      imu->ubuf = 0;
 +      imu->len = blk_rq_bytes(rq);
 +      imu->folio_shift = PAGE_SHIFT;
 +      refcount_set(&imu->refs, 1);
 +      imu->release = release;
 +      imu->priv = rq;
 +      imu->flags = IO_REGBUF_F_KBUF;
 +      imu->dir = 1 << rq_data_dir(rq);
 +
++=======
+       nr_bvecs = 0;
++>>>>>>> 27eada8066bd (io_uring/rsrc: split io_buffer_register_request() logic)
        rq_for_each_bvec(bv, rq, rq_iter)
                imu->bvec[nr_bvecs++] = bv;
        imu->nr_bvecs = nr_bvecs;


that can be resolved by applying this:

diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c
index e1f4ad026f16..dfc2e63214f7 100644
--- a/io_uring/rsrc.c
+++ b/io_uring/rsrc.c
@@ -958,7 +958,6 @@ static struct io_mapped_ubuf
*io_kernel_buffer_init(struct io_ring_ctx *ctx,

        imu->ubuf = 0;
        imu->len = total_bytes;
-       imu->acct_pages = 0;
        imu->folio_shift = PAGE_SHIFT;
        imu->nr_bvecs = nr_bvecs;
        refcount_set(&imu->refs, 1);
@@ -997,19 +996,8 @@ int io_buffer_register_request(struct
io_uring_cmd *cmd, struct request *rq,
                ret = PTR_ERR(imu);
                goto unlock;
        }
-<<<<<<< HEAD
-       imu->ubuf = 0;
-       imu->len = blk_rq_bytes(rq);
-       imu->folio_shift = PAGE_SHIFT;
-       refcount_set(&imu->refs, 1);
-       imu->release = release;
-       imu->priv = rq;
-       imu->flags = IO_REGBUF_F_KBUF;
-       imu->dir = 1 << rq_data_dir(rq);

-=======
        nr_bvecs = 0;
->>>>>>> 27eada8066bd (io_uring/rsrc: split io_buffer_register_request() logic)
        rq_for_each_bvec(bv, rq, rq_iter)
                imu->bvec[nr_bvecs++] = bv;
        imu->nr_bvecs = nr_bvecs;


If it makes things easier, this is the github tree on top of the fuse
for-next branch with the io-uring patches (with the merge conflict
fixup) and this series applied [3].

If there's anything else you need, please let me know.

Thanks,
Joanne

[1] https://lore.kernel.org/fuse-devel/[email protected]/
[2] https://lore.kernel.org/fuse-devel/[email protected]/
[3] https://github.com/joannekoong/linux/commits/fuse_zero_copy_v7/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.