Messages in this thread | | | Date | Fri, 22 Sep 2023 10:34:01 +0100 | From | Simon Horman <> | Subject | Re: [PATCH v5 07/11] iov_iter: Add a kernel-type iterator-only iteration function |
| |
On Wed, Sep 20, 2023 at 11:22:27PM +0100, David Howells wrote: > Add an iteration function that can only iterate over kernel internal-type > iterators (ie. BVEC, KVEC, XARRAY) and not user-backed iterators (ie. UBUF > and IOVEC). This allows for smaller iterators to be built when it is known > the caller won't have a user-backed iterator. > > Signed-off-by: David Howells <dhowells@redhat.com> > cc: Alexander Viro <viro@zeniv.linux.org.uk> > cc: Jens Axboe <axboe@kernel.dk> > cc: Christoph Hellwig <hch@lst.de> > cc: Christian Brauner <christian@brauner.io> > cc: Matthew Wilcox <willy@infradead.org> > cc: Linus Torvalds <torvalds@linux-foundation.org> > cc: David Laight <David.Laight@ACULAB.COM> > cc: linux-block@vger.kernel.org > cc: linux-fsdevel@vger.kernel.org > cc: linux-mm@kvack.org > --- > include/linux/iov_iter.h | 31 +++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) > > diff --git a/include/linux/iov_iter.h b/include/linux/iov_iter.h > index 270454a6703d..a94d605d7386 100644 > --- a/include/linux/iov_iter.h > +++ b/include/linux/iov_iter.h > @@ -271,4 +271,35 @@ size_t iterate_and_advance(struct iov_iter *iter, size_t len, void *priv, > return iterate_and_advance2(iter, len, priv, NULL, ustep, step); > } > > +/** > + * iterate_and_advance_kernel - Iterate over a kernel iterator > + * @iter: The iterator to iterate over. > + * @len: The amount to iterate over. > + * @priv: Data for the step functions.
nit: an entry for @priv2 belongs here
> + * @step: Processing function; given kernel addresses. > + * > + * Like iterate_and_advance2(), but rejected UBUF and IOVEC iterators and does > + * not take a user-step function. > + */ > +static __always_inline > +size_t iterate_and_advance_kernel(struct iov_iter *iter, size_t len, void *priv, > + void *priv2, iov_step_f step) > +{
...
| |