The block layer can use this knowledge to make smarter decisions on how to handle the request, if it knows that N more may be coming. Switch to using blk_start_plug_nr_ios() to pass in that information. Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> --- fs/io_uring.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 62dc128e9b6b..c35b0f230be8 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -314,6 +314,8 @@ struct io_submit_state { bool plug_started; bool need_plug; + unsigned short submit_nr; + /* * Batch completion logic */ @@ -7035,7 +7037,7 @@ static int io_init_req(struct io_ring_ctx *ctx, struct io_kiocb *req, * is potentially a read/write to block based storage. */ if (state->need_plug && io_op_defs[req->opcode].plug) { - blk_start_plug(&state->plug); + blk_start_plug_nr_ios(&state->plug, state->submit_nr); state->plug_started = true; state->need_plug = false; } @@ -7150,6 +7152,7 @@ static void io_submit_state_start(struct io_submit_state *state, { state->plug_started = false; state->need_plug = max_ios > 2; + state->submit_nr = max_ios; /* set only head, no need to init link_last in advance */ state->link.head = NULL; } -- 2.33.0