io-uring: move `struct io_br_sel` into io_uring_types.h
Move `struct io_br_sel` into io_uring_types.h and prepare for supporting provided buffer on uring_cmd. Signed-off-by: Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20250821040210.1152145-2-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
fe524b0684
commit
d589bcddaa
|
@ -85,6 +85,25 @@ struct io_mapped_region {
|
|||
unsigned flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Return value from io_buffer_list selection, to avoid stashing it in
|
||||
* struct io_kiocb. For legacy/classic provided buffers, keeping a reference
|
||||
* across execution contexts are fine. But for ring provided buffers, the
|
||||
* list may go away as soon as ->uring_lock is dropped. As the io_kiocb
|
||||
* persists, it's better to just keep the buffer local for those cases.
|
||||
*/
|
||||
struct io_br_sel {
|
||||
struct io_buffer_list *buf_list;
|
||||
/*
|
||||
* Some selection parts return the user address, others return an error.
|
||||
*/
|
||||
union {
|
||||
void __user *addr;
|
||||
ssize_t val;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Arbitrary limit, can be raised if need be
|
||||
*/
|
||||
|
|
|
@ -62,24 +62,6 @@ struct buf_sel_arg {
|
|||
unsigned short partial_map;
|
||||
};
|
||||
|
||||
/*
|
||||
* Return value from io_buffer_list selection, to avoid stashing it in
|
||||
* struct io_kiocb. For legacy/classic provided buffers, keeping a reference
|
||||
* across execution contexts are fine. But for ring provided buffers, the
|
||||
* list may go away as soon as ->uring_lock is dropped. As the io_kiocb
|
||||
* persists, it's better to just keep the buffer local for those cases.
|
||||
*/
|
||||
struct io_br_sel {
|
||||
struct io_buffer_list *buf_list;
|
||||
/*
|
||||
* Some selection parts return the user address, others return an error.
|
||||
*/
|
||||
union {
|
||||
void __user *addr;
|
||||
ssize_t val;
|
||||
};
|
||||
};
|
||||
|
||||
struct io_br_sel io_buffer_select(struct io_kiocb *req, size_t *len,
|
||||
unsigned buf_group, unsigned int issue_flags);
|
||||
int io_buffers_select(struct io_kiocb *req, struct buf_sel_arg *arg,
|
||||
|
|
Loading…
Reference in New Issue