From: Joanne Koong <joannelkoong@gmail.com>
To: brauner@kernel.org, hch@lst.de
Cc: djwong@kernel.org, willy@infradead.org,
hsiangkao@linux.alibaba.com, linux-fsdevel@vger.kernel.org,
linux-xfs@vger.kernel.org
Subject: [PATCH v2 00/18] iomap: convert to in-iter iomap_next() model
Date: Tue, 30 Jun 2026 17:09:15 -0700 [thread overview]
Message-ID: <20260701000949.1666714-1-joannelkoong@gmail.com> (raw)
This series implements a suggestion by Christoph for finishing the conversion
of iomap to an iterator model. This revives Matthew's previous RFC [1], which
had the same intention.
This series has no functional changes intended. Patch 1 introduces the new
->iomap_next() interface, and the rest is a mechanical conversion to the new
api. The patches are broken down as:
1) Patch 1: adds ->iomap_next() and an iomap_process() inline helper that
filesystems can use by passing in their direct begin/end helper functions
2) Patches 2 to 15: converts each filesystem to ->iomap_next()
3) Patch 16: Removes the legacy ->iomap_begin()/->iomap_end() path
4) Patch 17: Passes iomap_next_fn directly instead of struct iomap_ops
5) Patch 18: Updates the iomap documentation to match.
If needed, performance-critical callers can later inline the iteration into
the caller and avoid the indirect iomap_next_fn call on hot paths.
This series is submitted against Christian's vfs iomap tree, and is based
on top of the current head of his tree (commit f2727952b21d1).
Thanks,
Joanne
[1] https://lore.kernel.org/linux-fsdevel/20200728173216.7184-1-willy@infradead.org/T/#u
Changelog
---------
v1: https://lore.kernel.org/linux-fsdevel/20260625024723.1611000-1-joannelkoong@gmail.com/
v1 -> v2:
* Implement conversion for all callers
Joanne Koong (18):
iomap: add ->iomap_next() and iomap_process() helper
xfs: convert iomap ops to ->iomap_next()
btrfs: convert iomap ops to ->iomap_next()
ntfs3: convert iomap ops to ->iomap_next()
ntfs: convert iomap ops to ->iomap_next()
ext4: convert iomap ops to ->iomap_next()
erofs: convert iomap ops to ->iomap_next()
zonefs: convert iomap ops to ->iomap_next()
ext2: convert iomap ops to ->iomap_next()
block: convert iomap ops to ->iomap_next()
f2fs: convert iomap ops to ->iomap_next()
gfs2: convert iomap ops to ->iomap_next()
hpfs: convert iomap ops to ->iomap_next()
fuse: convert iomap ops to ->iomap_next()
exfat: convert iomap ops to ->iomap_next()
iomap: remove ->iomap_begin()/->iomap_end() legacy path
iomap: pass iomap_next_fn directly instead of struct iomap_ops
Documentation: iomap: update docs to reflect iomap_next model
Documentation/filesystems/iomap/design.rst | 115 ++++++++++-----
.../filesystems/iomap/operations.rst | 60 ++++----
Documentation/filesystems/iomap/porting.rst | 22 ++-
block/fops.c | 14 +-
fs/btrfs/direct-io.c | 14 +-
fs/dax.c | 47 ++++---
fs/erofs/data.c | 30 ++--
fs/erofs/internal.h | 3 +-
fs/erofs/zmap.c | 9 +-
fs/exfat/file.c | 18 +--
fs/exfat/inode.c | 6 +-
fs/exfat/iomap.c | 20 +--
fs/exfat/iomap.h | 6 +-
fs/ext2/ext2.h | 3 +-
fs/ext2/file.c | 4 +-
fs/ext2/inode.c | 12 +-
fs/ext4/ext4.h | 6 +-
fs/ext4/extents.c | 12 +-
fs/ext4/file.c | 14 +-
fs/ext4/inode.c | 23 +--
fs/f2fs/data.c | 9 +-
fs/f2fs/f2fs.h | 3 +-
fs/f2fs/file.c | 4 +-
fs/fuse/dax.c | 16 ++-
fs/fuse/file.c | 14 +-
fs/fuse/virtio_fs.c | 2 +-
fs/gfs2/aops.c | 6 +-
fs/gfs2/bmap.c | 12 +-
fs/gfs2/bmap.h | 3 +-
fs/gfs2/file.c | 6 +-
fs/gfs2/inode.c | 6 +-
fs/hpfs/file.c | 10 +-
fs/internal.h | 1 -
fs/iomap/buffered-io.c | 38 ++---
fs/iomap/direct-io.c | 8 +-
fs/iomap/fiemap.c | 8 +-
fs/iomap/iter.c | 88 +++++++-----
fs/iomap/seek.c | 8 +-
fs/iomap/swapfile.c | 4 +-
fs/ntfs/aops.c | 6 +-
fs/ntfs/file.c | 24 ++--
fs/ntfs/inode.c | 2 +-
fs/ntfs/iomap.c | 58 +++++---
fs/ntfs/iomap.h | 15 +-
fs/ntfs3/file.c | 16 +--
fs/ntfs3/inode.c | 16 ++-
fs/ntfs3/ntfs_fs.h | 3 +-
fs/remap_range.c | 6 +-
fs/xfs/xfs_aops.c | 8 +-
fs/xfs/xfs_file.c | 44 +++---
fs/xfs/xfs_iomap.c | 105 ++++++++++----
fs/xfs/xfs_iomap.h | 24 ++--
fs/xfs/xfs_iops.c | 4 +-
fs/xfs/xfs_reflink.c | 6 +-
fs/zonefs/file.c | 32 +++--
include/linux/dax.h | 18 ++-
include/linux/fs.h | 7 +-
include/linux/iomap.h | 131 ++++++++++++------
58 files changed, 730 insertions(+), 479 deletions(-)
--
2.52.0
next reply other threads:[~2026-07-01 0:10 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-01 0:09 Joanne Koong [this message]
2026-07-01 0:09 ` [PATCH v2 01/18] iomap: add ->iomap_next() and iomap_process() helper Joanne Koong
2026-07-02 14:00 ` Christoph Hellwig
2026-07-02 23:01 ` Joanne Koong
2026-07-02 16:23 ` Darrick J. Wong
2026-07-02 22:41 ` Joanne Koong
2026-07-01 0:09 ` [PATCH v2 02/18] xfs: convert iomap ops to ->iomap_next() Joanne Koong
2026-07-02 14:03 ` Christoph Hellwig
2026-07-02 16:48 ` Darrick J. Wong
2026-07-02 16:43 ` Darrick J. Wong
2026-07-02 23:59 ` Joanne Koong
2026-07-03 1:21 ` Joanne Koong
2026-07-03 1:41 ` Darrick J. Wong
2026-07-03 1:38 ` Darrick J. Wong
2026-07-01 0:09 ` [PATCH v2 03/18] btrfs: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 04/18] ntfs3: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 05/18] ntfs: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 06/18] ext4: " Joanne Koong
2026-07-01 10:01 ` Jan Kara
2026-07-01 0:09 ` [PATCH v2 07/18] erofs: " Joanne Koong
2026-07-01 0:41 ` Gao Xiang
2026-07-01 0:09 ` [PATCH v2 08/18] zonefs: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 09/18] ext2: " Joanne Koong
2026-07-01 10:02 ` Jan Kara
2026-07-01 0:09 ` [PATCH v2 10/18] block: " Joanne Koong
2026-07-01 0:55 ` Keith Busch
2026-07-02 14:03 ` Christoph Hellwig
2026-07-03 0:06 ` Joanne Koong
2026-07-01 0:09 ` [PATCH v2 11/18] f2fs: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 12/18] gfs2: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 13/18] hpfs: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 14/18] fuse: " Joanne Koong
2026-07-01 0:09 ` [PATCH v2 15/18] exfat: " Joanne Koong
2026-07-03 1:41 ` Joanne Koong
2026-07-01 0:09 ` [PATCH v2 16/18] iomap: remove ->iomap_begin()/->iomap_end() legacy path Joanne Koong
2026-07-02 14:04 ` Christoph Hellwig
2026-07-02 16:51 ` Darrick J. Wong
2026-07-01 0:09 ` [PATCH v2 17/18] iomap: pass iomap_next_fn directly instead of struct iomap_ops Joanne Koong
2026-07-01 10:04 ` Jan Kara
2026-07-02 14:07 ` Christoph Hellwig
2026-07-02 16:51 ` Darrick J. Wong
2026-07-03 1:47 ` Joanne Koong
2026-07-03 2:01 ` Darrick J. Wong
2026-07-02 16:58 ` Darrick J. Wong
2026-07-03 0:17 ` Joanne Koong
2026-07-03 1:42 ` Darrick J. Wong
2026-07-01 0:09 ` [PATCH v2 18/18] Documentation: iomap: update docs to reflect iomap_next model Joanne Koong
2026-07-02 14:07 ` Christoph Hellwig
2026-07-02 19:26 ` Darrick J. Wong
2026-07-03 1:36 ` Joanne Koong
2026-07-03 2:00 ` Darrick J. Wong
2026-07-02 13:49 ` [PATCH v2 00/18] iomap: convert to in-iter iomap_next() model Christoph Hellwig
2026-07-03 1:08 ` Joanne Koong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260701000949.1666714-1-joannelkoong@gmail.com \
--to=joannelkoong@gmail.com \
--cc=brauner@kernel.org \
--cc=djwong@kernel.org \
--cc=hch@lst.de \
--cc=hsiangkao@linux.alibaba.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox