mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
io_uring: add 'io_comp_state' to struct io_submit_state
No functional changes in this patch, just in preparation for passing back pending completions to the caller and completing them in a batched fashion. Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e1e16097e2
commit
013538bd65
@ -678,6 +678,12 @@ struct io_kiocb {
|
||||
|
||||
#define IO_IOPOLL_BATCH 8
|
||||
|
||||
struct io_comp_state {
|
||||
unsigned int nr;
|
||||
struct list_head list;
|
||||
struct io_ring_ctx *ctx;
|
||||
};
|
||||
|
||||
struct io_submit_state {
|
||||
struct blk_plug plug;
|
||||
|
||||
@ -687,6 +693,11 @@ struct io_submit_state {
|
||||
void *reqs[IO_IOPOLL_BATCH];
|
||||
unsigned int free_reqs;
|
||||
|
||||
/*
|
||||
* Batch completion logic
|
||||
*/
|
||||
struct io_comp_state comp;
|
||||
|
||||
/*
|
||||
* File reference cache
|
||||
*/
|
||||
@ -6006,12 +6017,15 @@ static void io_submit_state_end(struct io_submit_state *state)
|
||||
* Start submission side cache.
|
||||
*/
|
||||
static void io_submit_state_start(struct io_submit_state *state,
|
||||
unsigned int max_ios)
|
||||
struct io_ring_ctx *ctx, unsigned int max_ios)
|
||||
{
|
||||
blk_start_plug(&state->plug);
|
||||
#ifdef CONFIG_BLOCK
|
||||
state->plug.nowait = true;
|
||||
#endif
|
||||
state->comp.nr = 0;
|
||||
INIT_LIST_HEAD(&state->comp.list);
|
||||
state->comp.ctx = ctx;
|
||||
state->free_reqs = 0;
|
||||
state->file = NULL;
|
||||
state->ios_left = max_ios;
|
||||
@ -6146,7 +6160,7 @@ static int io_submit_sqes(struct io_ring_ctx *ctx, unsigned int nr,
|
||||
if (!percpu_ref_tryget_many(&ctx->refs, nr))
|
||||
return -EAGAIN;
|
||||
|
||||
io_submit_state_start(&state, nr);
|
||||
io_submit_state_start(&state, ctx, nr);
|
||||
|
||||
ctx->ring_fd = ring_fd;
|
||||
ctx->ring_file = ring_file;
|
||||
|
Loading…
Reference in New Issue
Block a user