io_uring: allow buffer recycling in READV
authorDylan Yudaken <dylany@fb.com>
Wed, 7 Sep 2022 16:51:52 +0000 (09:51 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 21 Sep 2022 16:30:43 +0000 (10:30 -0600)
commit4ab9d465071beb95e30e2712d4c65b6ab781865b
treed6297abd331d430fedd6486859449185b8c74b92
parentde97fcb30316410a2c46be102f074a454ecc6cf1
io_uring: allow buffer recycling in READV

In commit 934447a603b2 ("io_uring: do not recycle buffer in READV") a
temporary fix was put in io_kbuf_recycle to simply never recycle READV
buffers.

Instead of that, rather treat READV with REQ_F_BUFFER_SELECTED the same as
a READ with REQ_F_BUFFER_SELECTED. Since READV requires iov_len of 1 they
are essentially the same.
In order to do this inside io_prep_rw() add some validation to check that
it is in fact only length 1, and also extract the length of the buffer at
prep time.

This allows removal of the io_iov_buffer_select codepaths as they are only
used from the READV op.

Signed-off-by: Dylan Yudaken <dylany@fb.com>
Link: https://lore.kernel.org/r/20220907165152.994979-1-dylany@fb.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/kbuf.h
io_uring/rw.c