Skip to content

Commit 2519369

Browse files
Brian Fosterbrauner
authored andcommitted
iomap: reset per-iter state on non-error iter advances
iomap_iter_advance() zeroes the processed and mapping fields on every non-error iteration except for the last expected iteration (i.e. return 0 expected to terminate the iteration loop). This appears to be circumstantial as nothing currently relies on these fields after the final iteration. Therefore to better faciliate iomap_iter reuse in subsequent patches, update iomap_iter_advance() to always reset per-iteration state on successful completion. Signed-off-by: Brian Foster <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Darrick J. Wong <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Christian Brauner <[email protected]>
1 parent a514e6f commit 2519369

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

fs/iomap/iter.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,25 @@
2222
static inline int iomap_iter_advance(struct iomap_iter *iter)
2323
{
2424
bool stale = iter->iomap.flags & IOMAP_F_STALE;
25+
int ret = 1;
2526

2627
/* handle the previous iteration (if any) */
2728
if (iter->iomap.length) {
2829
if (iter->processed < 0)
2930
return iter->processed;
30-
if (!iter->processed && !stale)
31-
return 0;
3231
if (WARN_ON_ONCE(iter->processed > iomap_length(iter)))
3332
return -EIO;
3433
iter->pos += iter->processed;
3534
iter->len -= iter->processed;
36-
if (!iter->len)
37-
return 0;
35+
if (!iter->len || (!iter->processed && !stale))
36+
ret = 0;
3837
}
3938

40-
/* clear the state for the next iteration */
39+
/* clear the per iteration state */
4140
iter->processed = 0;
4241
memset(&iter->iomap, 0, sizeof(iter->iomap));
4342
memset(&iter->srcmap, 0, sizeof(iter->srcmap));
44-
return 1;
43+
return ret;
4544
}
4645

4746
static inline void iomap_iter_done(struct iomap_iter *iter)

0 commit comments

Comments
 (0)