summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Foster <bfoster@redhat.com>2025-02-24 09:47:52 -0500
committerChristian Brauner <brauner@kernel.org>2025-02-26 09:42:36 +0100
commit9ba439cbdcf2b14548a451d4f4e2bd274b1af490 (patch)
tree2842e46d53cf121ed2ba397eb846028b24d2cfe0
parent80fce30584076affbf7d84917f57968e2b812dde (diff)
dax: advance the iomap_iter on unshare range
Advance the iter and return 0 or an error code for success or failure. Signed-off-by: Brian Foster <bfoster@redhat.com> Link: https://lore.kernel.org/r/20250224144757.237706-8-bfoster@redhat.com Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
-rw-r--r--fs/dax.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/dax.c b/fs/dax.c
index f4d8c8c10086..c0fbab8c66f7 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -1266,11 +1266,11 @@ static s64 dax_unshare_iter(struct iomap_iter *iter)
u64 copy_len = iomap_length(iter);
u32 mod;
int id = 0;
- s64 ret = 0;
+ s64 ret = iomap_length(iter);
void *daddr = NULL, *saddr = NULL;
if (!iomap_want_unshare_iter(iter))
- return iomap_length(iter);
+ return iomap_iter_advance(iter, &ret);
/*
* Extend the file range to be aligned to fsblock/pagesize, because
@@ -1307,7 +1307,9 @@ static s64 dax_unshare_iter(struct iomap_iter *iter)
out_unlock:
dax_read_unlock(id);
- return dax_mem2blk_err(ret);
+ if (ret < 0)
+ return dax_mem2blk_err(ret);
+ return iomap_iter_advance(iter, &ret);
}
int dax_file_unshare(struct inode *inode, loff_t pos, loff_t len,