mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
netfs: Provide an iterator-reset function
Provide a function to reset the iterator on a subrequest. Signed-off-by: David Howells <dhowells@redhat.com> cc: Jeff Layton <jlayton@kernel.org> cc: netfs@lists.linux.dev cc: linux-fsdevel@vger.kernel.org Link: https://lore.kernel.org/r/20240814203850.2240469-17-dhowells@redhat.com/ # v2 Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
committed by
Christian Brauner
parent
cd0277ed0c
commit
bfaa33b8ba
@@ -84,6 +84,24 @@ void netfs_clear_buffer(struct netfs_io_request *rreq)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Reset the subrequest iterator to refer just to the region remaining to be
|
||||
* read. The iterator may or may not have been advanced by socket ops or
|
||||
* extraction ops to an extent that may or may not match the amount actually
|
||||
* read.
|
||||
*/
|
||||
void netfs_reset_iter(struct netfs_io_subrequest *subreq)
|
||||
{
|
||||
struct iov_iter *io_iter = &subreq->io_iter;
|
||||
size_t remain = subreq->len - subreq->transferred;
|
||||
|
||||
if (io_iter->count > remain)
|
||||
iov_iter_advance(io_iter, io_iter->count - remain);
|
||||
else if (io_iter->count < remain)
|
||||
iov_iter_revert(io_iter, remain - io_iter->count);
|
||||
iov_iter_truncate(&subreq->io_iter, remain);
|
||||
}
|
||||
|
||||
/**
|
||||
* netfs_dirty_folio - Mark folio dirty and pin a cache object for writeback
|
||||
* @mapping: The mapping the folio belongs to.
|
||||
|
||||
Reference in New Issue
Block a user