diff options
author | Jens Axboe <axboe@kernel.dk> | 2025-06-26 12:17:48 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2025-06-26 12:17:48 -0600 |
commit | 178b8ff66ff827c41b4fa105e9aabb99a0b5c537 (patch) | |
tree | 829ad60f69691824b13aaba88c84e45314add471 /io_uring/kbuf.h | |
parent | 9a709b7e98e6fa51600b5f2d24c5068efa6d39de (diff) |
io_uring/kbuf: flag partial buffer mappings
A previous commit aborted mapping more for a non-incremental ring for
bundle peeking, but depending on where in the process this peeking
happened, it would not necessarily prevent a retry by the user. That can
create gaps in the received/read data.
Add struct buf_sel_arg->partial_map, which can pass this information
back. The networking side can then map that to internal state and use it
to gate retry as well.
Since this necessitates a new flag, change io_sr_msg->retry to a
retry_flags member, and store both the retry and partial map condition
in there.
Cc: stable@vger.kernel.org
Fixes: 26ec15e4b0c1 ("io_uring/kbuf: don't truncate end buffer for multiple buffer peeks")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/kbuf.h')
-rw-r--r-- | io_uring/kbuf.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/io_uring/kbuf.h b/io_uring/kbuf.h index 5d83c7adc739..723d0361898e 100644 --- a/io_uring/kbuf.h +++ b/io_uring/kbuf.h @@ -58,7 +58,8 @@ struct buf_sel_arg { size_t max_len; unsigned short nr_iovs; unsigned short mode; - unsigned buf_group; + unsigned short buf_group; + unsigned short partial_map; }; void __user *io_buffer_select(struct io_kiocb *req, size_t *len, |