io_uring: inform block layer of how many requests we are submitting
authorJens Axboe <axboe@kernel.dk>
Wed, 6 Oct 2021 17:01:42 +0000 (11:01 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 19 Oct 2021 11:49:56 +0000 (05:49 -0600)
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@kernel.dk>
fs/io_uring.c

index b834cf2..240222d 100644 (file)
@@ -317,6 +317,7 @@ struct io_submit_state {
 
        bool                    plug_started;
        bool                    need_plug;
+       unsigned short          submit_nr;
        struct blk_plug         plug;
 };
 
@@ -7060,7 +7061,7 @@ static int io_init_req(struct io_ring_ctx *ctx, struct io_kiocb *req,
                if (state->need_plug && io_op_defs[opcode].plug) {
                        state->plug_started = true;
                        state->need_plug = false;
-                       blk_start_plug(&state->plug);
+                       blk_start_plug_nr_ios(&state->plug, state->submit_nr);
                }
 
                req->file = io_file_get(ctx, req, READ_ONCE(sqe->fd),
@@ -7181,6 +7182,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;
 }