Re: [PATCH 2/2] iomap: submit read bio after each extent
Joanne Koong <[email protected]> Thu, 25 Jun 2026 11:32:40 -0700
| Newsgroups | dev.linux.lists.ntfs3,dev.linux.lists.fuse-devel,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-xfs,org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <CAJnrk1YFeirQ4g7qcVsda-8qPLeAtoiyW6ZBuJb2qDsGpxi-tg@mail.gmail.com> |
On Thu, Jun 25, 2026 at 10:47 AM Darrick J. Wong <[email protected]> wrote: > > On Thu, Jun 25, 2026 at 02:07:57PM +0200, Christoph Hellwig wrote: > > > So instead of adding more checks move over to a model where a bio only > > spans a single iomap. Change ->submit_read to be called after each > > iteration, and pass a force argument to indicate that the bio must > > be submitted set on the last iteration. Switch the bio based users > > to always submit, while keeping the single submit for fuse. > > Is fuse the sole reason for the "force" parameter to exist? I wonder if > fuse could drop its submit_read function and call fuse_send_readpages > after the iomap_read{ahead,folio} function returns? > Yes, that works. I think that's a good idea. fuse only needs submit_read logic for readahead. The change would just be: --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -953,19 +953,8 @@ static int fuse_iomap_read_folio_range_async(const struct iomap_iter *iter, return ret; } -static void fuse_iomap_submit_read(const struct iomap_iter *iter, - struct iomap_read_folio_ctx *ctx) -{ - struct fuse_fill_read_data *data = ctx->read_ctx; - - if (data->ia) - fuse_send_readpages(data->ia, data->file, data->nr_bytes, - data->fc->async_read); -} - static const struct iomap_read_ops fuse_iomap_read_ops = { .read_folio_range = fuse_iomap_read_folio_range_async, - .submit_read = fuse_iomap_submit_read, }; static int fuse_read_folio(struct file *file, struct folio *folio) @@ -1089,6 +1078,9 @@ static void fuse_readahead(struct readahead_control *rac) return; iomap_readahead(&fuse_iomap_ops, &ctx, NULL); + if (data.ia) + fuse_send_readpages(data.ia, data.file, data.nr_bytes, + fc->async_read); } If this fix needs to go into 7.2 though, maybe it makes sense to land the v1 implementation [1] + the xfs integrity fix now and do the fuse change later? Thanks, Joanne [1] https://lore.kernel.org/linux-fsdevel/[email protected]/