Message ID | 20250212135712.506987-5-bfoster@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | iomap: incremental advance conversion -- phase 2 | expand |
On Wed, Feb 12, 2025 at 08:57:06AM -0500, Brian Foster wrote: > DAX reads and writes flow through dax_iomap_iter(), which has one or > more subtleties in terms of how it processes a range vs. what is > specified in the iomap_iter. To keep things simple and remove the > dependency on iomap_iter() advances, convert a positive return from > dax_iomap_iter() to the new advance and status return semantics. The > advance can be pushed further down in future patches. Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de> (and looking forward to the future patches..)
On Wed, Feb 12, 2025 at 10:55:12PM -0800, Christoph Hellwig wrote: > On Wed, Feb 12, 2025 at 08:57:06AM -0500, Brian Foster wrote: > > DAX reads and writes flow through dax_iomap_iter(), which has one or > > more subtleties in terms of how it processes a range vs. what is > > specified in the iomap_iter. To keep things simple and remove the > > dependency on iomap_iter() advances, convert a positive return from > > dax_iomap_iter() to the new advance and status return semantics. The > > advance can be pushed further down in future patches. > > Looks good: > > Reviewed-by: Christoph Hellwig <hch@lst.de> > > (and looking forward to the future patches..) > Thanks. The patch to push this down a level seems to be working now so I'll include it in v2. Brian
diff --git a/fs/dax.c b/fs/dax.c index 21b47402b3dc..296f5aa18640 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -1585,8 +1585,12 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, if (iocb->ki_flags & IOCB_NOWAIT) iomi.flags |= IOMAP_NOWAIT; - while ((ret = iomap_iter(&iomi, ops)) > 0) + while ((ret = iomap_iter(&iomi, ops)) > 0) { iomi.processed = dax_iomap_iter(&iomi, iter); + if (iomi.processed > 0) + iomi.processed = iomap_iter_advance(&iomi, + &iomi.processed); + } done = iomi.pos - iocb->ki_pos; iocb->ki_pos = iomi.pos;
DAX reads and writes flow through dax_iomap_iter(), which has one or more subtleties in terms of how it processes a range vs. what is specified in the iomap_iter. To keep things simple and remove the dependency on iomap_iter() advances, convert a positive return from dax_iomap_iter() to the new advance and status return semantics. The advance can be pushed further down in future patches. Signed-off-by: Brian Foster <bfoster@redhat.com> --- fs/dax.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)