| From: |
| Joanne Koong <joannelkoong-AT-gmail.com> |
| To: |
| brauner-AT-kernel.org, hch-AT-lst.de |
| Subject: |
| [PATCH v2 00/18] iomap: convert to in-iter iomap_next() model |
| Date: |
| Tue, 30 Jun 2026 17:09:15 -0700 |
| Message-ID: |
| <20260701000949.1666714-1-joannelkoong@gmail.com> |
| Cc: |
| djwong-AT-kernel.org, willy-AT-infradead.org, hsiangkao-AT-linux.alibaba.com, linux-fsdevel-AT-vger.kernel.org, linux-xfs-AT-vger.kernel.org |
| Archive-link: |
| Article |
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...
Changelog
---------
v1: https://lore.kernel.org/linux-fsdevel/20260625024723.1611...
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