linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 00/16] fuse: use iomap for buffered reads + readahead
@ 2025-08-29 23:56 Joanne Koong
  2025-08-29 23:56 ` [PATCH v1 01/16] iomap: move async bio read logic into helper function Joanne Koong
                   ` (15 more replies)
  0 siblings, 16 replies; 54+ messages in thread
From: Joanne Koong @ 2025-08-29 23:56 UTC (permalink / raw)
  To: brauner, miklos
  Cc: hch, djwong, linux-fsdevel, kernel-team, linux-xfs, linux-doc

This series adds fuse iomap support for buffered reads and readahead.
This is needed so that granular uptodate tracking can be used in fuse when
large folios are enabled so that only the needed portions of the folio need to
be read in instead of having to read in the entire folio. It also is needed in
order to turn on large folios for servers that use the writeback cache since
otherwise there is a race condition that may lead to data corruption if there
is a partial write, then a read and the read happens before the write has
undergone writeback, since otherwise the folio will not be marked uptodate
from the partial write so the read will read in the entire folio from disk,
which will overwrite the partial write.

Part of this work is modifying the iomap interface to support non-bio
reads and to work on environments that do not have CONFIG_BLOCK enabled,
which is what patchsets 1 to 6 do.

This is on top of commit 4f702205 ("Merge branch 'vfs-6.18.rust' into
vfs.all") in Christian's vfs tree.

This series was run through fstests on fuse passthrough_hp with an
out-of kernel patch enabling fuse large folios.

This patchset does not enable large folios on fuse yet. That will be part
of a different patchset.

Thanks,
Joanne

Joanne Koong (16):
  iomap: move async bio read logic into helper function
  iomap: rename cur_folio_in_bio to folio_unlocked
  iomap: refactor read/readahead completion
  iomap: use iomap_iter->private for stashing read/readahead bio
  iomap: propagate iomap_read_folio() error to caller
  iomap: move read/readahead logic out of CONFIG_BLOCK guard
  iomap: iterate through entire folio in iomap_readpage_iter()
  iomap: rename iomap_readpage_iter() to iomap_readfolio_iter()
  iomap: rename iomap_readpage_ctx struct to iomap_readfolio_ctx
  iomap: add iomap_start_folio_read() helper
  iomap: make start folio read and finish folio read public APIs
  iomap: add iomap_read_ops for read and readahead
  iomap: add a private arg for read and readahead
  fuse: use iomap for read_folio
  fuse: use iomap for readahead
  fuse: remove fuse_readpages_end() null mapping check

 .../filesystems/iomap/operations.rst          |  19 ++
 block/fops.c                                  |   4 +-
 fs/erofs/data.c                               |   4 +-
 fs/fuse/file.c                                | 298 +++++++++-------
 fs/gfs2/aops.c                                |   4 +-
 fs/iomap/buffered-io.c                        | 321 +++++++++++-------
 fs/xfs/xfs_aops.c                             |   4 +-
 fs/zonefs/file.c                              |   4 +-
 include/linux/iomap.h                         |  24 +-
 9 files changed, 412 insertions(+), 270 deletions(-)

-- 
2.47.3


^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2025-09-04 22:48 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-29 23:56 [PATCH v1 00/16] fuse: use iomap for buffered reads + readahead Joanne Koong
2025-08-29 23:56 ` [PATCH v1 01/16] iomap: move async bio read logic into helper function Joanne Koong
2025-09-03 20:16   ` Darrick J. Wong
2025-09-04  6:00     ` Christoph Hellwig
2025-09-04 21:44       ` Joanne Koong
2025-08-29 23:56 ` [PATCH v1 02/16] iomap: rename cur_folio_in_bio to folio_unlocked Joanne Koong
2025-09-03 20:26   ` [PATCH v1 02/16] iomap: rename cur_folio_in_bio to folio_unlockedOM Darrick J. Wong
2025-09-04  6:03     ` Christoph Hellwig
2025-09-04 22:06       ` Joanne Koong
2025-08-29 23:56 ` [PATCH v1 03/16] iomap: refactor read/readahead completion Joanne Koong
2025-09-04  6:05   ` Christoph Hellwig
2025-08-29 23:56 ` [PATCH v1 04/16] iomap: use iomap_iter->private for stashing read/readahead bio Joanne Koong
2025-09-03 20:30   ` Darrick J. Wong
2025-09-04  6:07     ` Christoph Hellwig
2025-09-04 22:20       ` Joanne Koong
2025-08-29 23:56 ` [PATCH v1 05/16] iomap: propagate iomap_read_folio() error to caller Joanne Koong
2025-09-03 20:32   ` Darrick J. Wong
2025-09-04  6:09   ` Christoph Hellwig
2025-09-04 21:13     ` Matthew Wilcox
2025-08-29 23:56 ` [PATCH v1 06/16] iomap: move read/readahead logic out of CONFIG_BLOCK guard Joanne Koong
2025-08-29 23:56 ` [PATCH v1 07/16] iomap: iterate through entire folio in iomap_readpage_iter() Joanne Koong
2025-09-03 20:43   ` Darrick J. Wong
2025-09-04 22:37     ` Joanne Koong
2025-09-04  6:14   ` Christoph Hellwig
2025-09-04 22:45     ` Joanne Koong
2025-08-29 23:56 ` [PATCH v1 08/16] iomap: rename iomap_readpage_iter() to iomap_readfolio_iter() Joanne Koong
2025-09-04  6:15   ` Christoph Hellwig
2025-09-04 22:47     ` Joanne Koong
2025-08-29 23:56 ` [PATCH v1 09/16] iomap: rename iomap_readpage_ctx struct to iomap_readfolio_ctx Joanne Koong
2025-09-03 20:44   ` Darrick J. Wong
2025-08-29 23:56 ` [PATCH v1 10/16] iomap: add iomap_start_folio_read() helper Joanne Koong
2025-09-03 20:52   ` Darrick J. Wong
2025-08-29 23:56 ` [PATCH v1 11/16] iomap: make start folio read and finish folio read public APIs Joanne Koong
2025-09-03 20:53   ` Darrick J. Wong
2025-09-04  6:15   ` Christoph Hellwig
2025-08-29 23:56 ` [PATCH v1 12/16] iomap: add iomap_read_ops for read and readahead Joanne Koong
2025-09-03 21:08   ` Darrick J. Wong
2025-09-04 20:58     ` Joanne Koong
2025-09-04  6:21   ` Christoph Hellwig
2025-09-04 21:38     ` Joanne Koong
2025-08-29 23:56 ` [PATCH v1 13/16] iomap: add a private arg " Joanne Koong
2025-08-30  1:54   ` Gao Xiang
2025-09-02 21:24     ` Joanne Koong
2025-09-03  1:55       ` Gao Xiang
2025-09-03 21:11   ` Darrick J. Wong
2025-08-29 23:56 ` [PATCH v1 14/16] fuse: use iomap for read_folio Joanne Koong
2025-09-03 21:13   ` Darrick J. Wong
2025-08-29 23:56 ` [PATCH v1 15/16] fuse: use iomap for readahead Joanne Koong
2025-09-03 21:17   ` Darrick J. Wong
2025-09-04 19:40     ` Joanne Koong
2025-09-04 19:46   ` Joanne Koong
2025-08-29 23:56 ` [PATCH v1 16/16] fuse: remove fuse_readpages_end() null mapping check Joanne Koong
2025-09-02  9:21   ` Miklos Szeredi
2025-09-02 21:19     ` Joanne Koong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).