Re: [PATCH v4 05/21] xfs: convert iomap ops to ->iomap_next()
"Darrick J. Wong" <[email protected]> Mon, 27 Jul 2026 15:28:58 -0700
| Newsgroups | org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <20260727222858.GH2901224@frogsfrogsfrogs> |
On Mon, Jul 27, 2026 at 02:17:42PM -0700, Joanne Koong wrote: > Convert xfs iomap_ops to the new ->iomap_next() callback. Each callback is > generated with the DEFINE_IOMAP_ITER_NEXT()/DEFINE_IOMAP_ITER_NEXT_END() > macros, which wrap the iomap_iter_next() helper to finish the previous > mapping if needed and produce the next one. No functional changes are > intended. > > Reviewed-by: Christoph Hellwig <[email protected]> > Signed-off-by: Joanne Koong <[email protected]> Nice straightforward conversion! :) Reviewed-by: "Darrick J. Wong" <[email protected]> --D > --- > fs/xfs/xfs_file.c | 4 ++-- > fs/xfs/xfs_iomap.c | 39 +++++++++++++++++++++++++++++---------- > 2 files changed, 31 insertions(+), 12 deletions(-) > > diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c > index b733225d2864..768cabf6250b 100644 > --- a/fs/xfs/xfs_file.c > +++ b/fs/xfs/xfs_file.c > @@ -859,9 +859,9 @@ xfs_file_dio_write_atomic( > NULL, 0); > > /* > - * The retry mechanism is based on the ->iomap_begin method returning > + * The retry mechanism is based on the ->iomap_next method returning > * -ENOPROTOOPT, which would be when the REQ_ATOMIC-based write is not > - * possible. The REQ_ATOMIC-based method typically not be possible if > + * possible. The REQ_ATOMIC-based method is typically not possible if > * the write spans multiple extents or the disk blocks are misaligned. > */ > if (ret == -ENOPROTOOPT && dops == &xfs_direct_write_iomap_ops) { > diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c > index 0536e2aeddcc..71c45be8c652 100644 > --- a/fs/xfs/xfs_iomap.c > +++ b/fs/xfs/xfs_iomap.c > @@ -1037,8 +1037,11 @@ xfs_direct_write_iomap_begin( > return error; > } > > +static DEFINE_IOMAP_ITER_NEXT(xfs_direct_write_iomap_next, > + xfs_direct_write_iomap_begin); > + > const struct iomap_ops xfs_direct_write_iomap_ops = { > - .iomap_begin = xfs_direct_write_iomap_begin, > + .iomap_next = xfs_direct_write_iomap_next, > }; > > #ifdef CONFIG_XFS_RT > @@ -1089,8 +1092,11 @@ xfs_zoned_direct_write_iomap_begin( > return 0; > } > > +static DEFINE_IOMAP_ITER_NEXT(xfs_zoned_direct_write_iomap_next, > + xfs_zoned_direct_write_iomap_begin); > + > const struct iomap_ops xfs_zoned_direct_write_iomap_ops = { > - .iomap_begin = xfs_zoned_direct_write_iomap_begin, > + .iomap_next = xfs_zoned_direct_write_iomap_next, > }; > #endif /* CONFIG_XFS_RT */ > > @@ -1274,8 +1280,11 @@ xfs_atomic_write_cow_iomap_begin( > return error; > } > > +static DEFINE_IOMAP_ITER_NEXT(xfs_atomic_write_cow_iomap_next, > + xfs_atomic_write_cow_iomap_begin); > + > const struct iomap_ops xfs_atomic_write_cow_iomap_ops = { > - .iomap_begin = xfs_atomic_write_cow_iomap_begin, > + .iomap_next = xfs_atomic_write_cow_iomap_next, > }; > > static int > @@ -1298,9 +1307,11 @@ xfs_dax_write_iomap_end( > return xfs_reflink_end_cow(ip, pos, written); > } > > +static DEFINE_IOMAP_ITER_NEXT_END(xfs_dax_write_iomap_next, > + xfs_direct_write_iomap_begin, xfs_dax_write_iomap_end); > + > const struct iomap_ops xfs_dax_write_iomap_ops = { > - .iomap_begin = xfs_direct_write_iomap_begin, > - .iomap_end = xfs_dax_write_iomap_end, > + .iomap_next = xfs_dax_write_iomap_next, > }; > > /* > @@ -2168,9 +2179,11 @@ xfs_buffered_write_iomap_end( > return 0; > } > > +static DEFINE_IOMAP_ITER_NEXT_END(xfs_buffered_write_iomap_next, > + xfs_buffered_write_iomap_begin, xfs_buffered_write_iomap_end); > + > const struct iomap_ops xfs_buffered_write_iomap_ops = { > - .iomap_begin = xfs_buffered_write_iomap_begin, > - .iomap_end = xfs_buffered_write_iomap_end, > + .iomap_next = xfs_buffered_write_iomap_next, > }; > > int > @@ -2214,8 +2227,10 @@ xfs_read_iomap_begin( > shared ? IOMAP_F_SHARED : 0, seq); > } > > +static DEFINE_IOMAP_ITER_NEXT(xfs_read_iomap_next, xfs_read_iomap_begin); > + > const struct iomap_ops xfs_read_iomap_ops = { > - .iomap_begin = xfs_read_iomap_begin, > + .iomap_next = xfs_read_iomap_next, > }; > > static int > @@ -2302,8 +2317,10 @@ xfs_seek_iomap_begin( > return error; > } > > +static DEFINE_IOMAP_ITER_NEXT(xfs_seek_iomap_next, xfs_seek_iomap_begin); > + > const struct iomap_ops xfs_seek_iomap_ops = { > - .iomap_begin = xfs_seek_iomap_begin, > + .iomap_next = xfs_seek_iomap_next, > }; > > static int > @@ -2349,8 +2366,10 @@ xfs_xattr_iomap_begin( > return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, IOMAP_F_XATTR, seq); > } > > +static DEFINE_IOMAP_ITER_NEXT(xfs_xattr_iomap_next, xfs_xattr_iomap_begin); > + > const struct iomap_ops xfs_xattr_iomap_ops = { > - .iomap_begin = xfs_xattr_iomap_begin, > + .iomap_next = xfs_xattr_iomap_next, > }; > > int > -- > 2.52.0 > >