Skip to content

Commit 2aa3048

Browse files
Christoph HellwigDarrick J. Wong
Christoph Hellwig
authored and
Darrick J. Wong
committed
iomap: switch iomap_zero_range to use iomap_iter
Switch iomap_zero_range to use iomap_iter. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]> Signed-off-by: Darrick J. Wong <[email protected]>
1 parent 8fc274d commit 2aa3048

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

fs/iomap/buffered-io.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -896,11 +896,12 @@ static s64 iomap_zero(struct inode *inode, loff_t pos, u64 length,
896896
return iomap_write_end(inode, pos, bytes, bytes, page, iomap, srcmap);
897897
}
898898

899-
static loff_t iomap_zero_range_actor(struct inode *inode, loff_t pos,
900-
loff_t length, void *data, struct iomap *iomap,
901-
struct iomap *srcmap)
899+
static loff_t iomap_zero_iter(struct iomap_iter *iter, bool *did_zero)
902900
{
903-
bool *did_zero = data;
901+
struct iomap *iomap = &iter->iomap;
902+
struct iomap *srcmap = iomap_iter_srcmap(iter);
903+
loff_t pos = iter->pos;
904+
loff_t length = iomap_length(iter);
904905
loff_t written = 0;
905906

906907
/* already zeroed? we're done. */
@@ -910,10 +911,11 @@ static loff_t iomap_zero_range_actor(struct inode *inode, loff_t pos,
910911
do {
911912
s64 bytes;
912913

913-
if (IS_DAX(inode))
914+
if (IS_DAX(iter->inode))
914915
bytes = dax_iomap_zero(pos, length, iomap);
915916
else
916-
bytes = iomap_zero(inode, pos, length, iomap, srcmap);
917+
bytes = iomap_zero(iter->inode, pos, length, iomap,
918+
srcmap);
917919
if (bytes < 0)
918920
return bytes;
919921

@@ -931,19 +933,17 @@ int
931933
iomap_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero,
932934
const struct iomap_ops *ops)
933935
{
934-
loff_t ret;
935-
936-
while (len > 0) {
937-
ret = iomap_apply(inode, pos, len, IOMAP_ZERO,
938-
ops, did_zero, iomap_zero_range_actor);
939-
if (ret <= 0)
940-
return ret;
941-
942-
pos += ret;
943-
len -= ret;
944-
}
936+
struct iomap_iter iter = {
937+
.inode = inode,
938+
.pos = pos,
939+
.len = len,
940+
.flags = IOMAP_ZERO,
941+
};
942+
int ret;
945943

946-
return 0;
944+
while ((ret = iomap_iter(&iter, ops)) > 0)
945+
iter.processed = iomap_zero_iter(&iter, did_zero);
946+
return ret;
947947
}
948948
EXPORT_SYMBOL_GPL(iomap_zero_range);
949949

0 commit comments

Comments
 (0)