All of lore.kernel.org
 help / color / mirror / Atom feed
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


             reply	other threads:[~2026-07-01  0:10 UTC|newest]

Thread overview: 77+ 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-03 12:33       ` Christoph Hellwig
2026-07-03 15:50         ` 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 12:32         ` Christoph Hellwig
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   ` [f2fs-dev] " Joanne Koong
2026-07-01  0:09 ` [PATCH v2 12/18] gfs2: " Joanne Koong
2026-07-03 11:45   ` Andreas Gruenbacher
2026-07-04  0:07     ` 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  0:09   ` [f2fs-dev] " Joanne Koong
2026-07-01 10:04   ` Jan Kara
2026-07-01 10:04     ` [f2fs-dev] " Jan Kara
2026-07-02 14:07   ` Christoph Hellwig
2026-07-02 14:07     ` [f2fs-dev] " Christoph Hellwig
2026-07-02 16:51     ` Darrick J. Wong
2026-07-02 16:51       ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-07-03  1:47       ` Joanne Koong
2026-07-03  1:47         ` [f2fs-dev] " Joanne Koong
2026-07-03  2:01         ` Darrick J. Wong via Linux-f2fs-devel
2026-07-03  2:01           ` Darrick J. Wong
2026-07-03 10:37         ` Christian Brauner
2026-07-03 10:37           ` [f2fs-dev] " Christian Brauner via Linux-f2fs-devel
2026-07-02 16:58   ` Darrick J. Wong
2026-07-02 16:58     ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
2026-07-03  0:17     ` Joanne Koong
2026-07-03  0:17       ` [f2fs-dev] " Joanne Koong
2026-07-03  1:42       ` Darrick J. Wong
2026-07-03  1:42         ` [f2fs-dev] " Darrick J. Wong via Linux-f2fs-devel
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-03 12:43         ` Christoph Hellwig
2026-07-03 16:11           ` Darrick J. Wong
2026-07-04  0:34             ` Joanne Koong
2026-07-04  4:38               ` Darrick J. Wong
2026-07-06  4:59                 ` Christoph Hellwig
2026-07-06  3:59               ` Christoph Hellwig
2026-07-06  3:56             ` Christoph Hellwig
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.