iomap: lift error code check out of iomap_iter_advance()

The error code is only used to check whether iomap_iter() should
terminate due to an error returned in iter.processed. Lift the check
out of iomap_iter_advance() in preparation to make it more generic.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Link: https://lore.kernel.org/r/20250207143253.314068-5-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>
This commit is contained in:
Brian Foster 2025-02-07 09:32:47 -05:00 committed by Christian Brauner
parent f479983866
commit 9183b2a0e4
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2

View File

@ -30,8 +30,6 @@ static inline int iomap_iter_advance(struct iomap_iter *iter, s64 count)
bool stale = iter->iomap.flags & IOMAP_F_STALE;
int ret = 1;
if (count < 0)
return count;
if (WARN_ON_ONCE(count > iomap_length(iter)))
return -EIO;
iter->pos += count;
@ -71,6 +69,7 @@ static inline void iomap_iter_done(struct iomap_iter *iter)
*/
int iomap_iter(struct iomap_iter *iter, const struct iomap_ops *ops)
{
s64 processed;
int ret;
trace_iomap_iter(iter, ops, _RET_IP_);
@ -86,8 +85,14 @@ int iomap_iter(struct iomap_iter *iter, const struct iomap_ops *ops)
return ret;
}
processed = iter->processed;
if (processed < 0) {
iomap_iter_reset_iomap(iter);
return processed;
}
/* advance and clear state from the previous iteration */
ret = iomap_iter_advance(iter, iter->processed);
ret = iomap_iter_advance(iter, processed);
iomap_iter_reset_iomap(iter);
if (ret <= 0)
return ret;