Skip to content

Commit f479983

Browse files
Brian Fosterbrauner
authored andcommitted
iomap: refactor iomap_iter() length check and tracepoint
iomap_iter() checks iomap.length to skip individual code blocks not appropriate for the initial case where there is no mapping in the iter. To prepare for upcoming changes, refactor the code to jump straight to the ->iomap_begin() handler in the initial case and move the tracepoint to the top of the function so it always executes. Signed-off-by: Brian Foster <bfoster@redhat.com> Link: https://lore.kernel.org/r/20250207143253.314068-4-bfoster@redhat.com Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent 2e4b0b6 commit f479983

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

fs/iomap/iter.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,12 @@ int iomap_iter(struct iomap_iter *iter, const struct iomap_ops *ops)
7373
{
7474
int ret;
7575

76-
if (iter->iomap.length && ops->iomap_end) {
76+
trace_iomap_iter(iter, ops, _RET_IP_);
77+
78+
if (!iter->iomap.length)
79+
goto begin;
80+
81+
if (ops->iomap_end) {
7782
ret = ops->iomap_end(iter->inode, iter->pos, iomap_length(iter),
7883
iter->processed > 0 ? iter->processed : 0,
7984
iter->flags, &iter->iomap);
@@ -82,14 +87,12 @@ int iomap_iter(struct iomap_iter *iter, const struct iomap_ops *ops)
8287
}
8388

8489
/* advance and clear state from the previous iteration */
85-
trace_iomap_iter(iter, ops, _RET_IP_);
86-
if (iter->iomap.length) {
87-
ret = iomap_iter_advance(iter, iter->processed);
88-
iomap_iter_reset_iomap(iter);
89-
if (ret <= 0)
90-
return ret;
91-
}
90+
ret = iomap_iter_advance(iter, iter->processed);
91+
iomap_iter_reset_iomap(iter);
92+
if (ret <= 0)
93+
return ret;
9294

95+
begin:
9396
ret = ops->iomap_begin(iter->inode, iter->pos, iter->len, iter->flags,
9497
&iter->iomap, &iter->srcmap);
9598
if (ret < 0)

0 commit comments

Comments
 (0)