Loading fs/io_uring.c +16 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 */ Loading Loading @@ -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; Loading Loading @@ -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 Loading
fs/io_uring.c +16 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 */ Loading Loading @@ -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; Loading Loading @@ -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