io_uring: refactor __io_req_complete_post
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 16 Jan 2023 16:49:01 +0000 (16:49 +0000)
committerJens Axboe <axboe@kernel.dk>
Sun, 29 Jan 2023 22:17:41 +0000 (15:17 -0700)
Keep parts of __io_req_complete_post() relying on req->flags together so
the value can be cached.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/2b4fbb42f404a0e75c4d9f0a5b16f314a839d0a9.1673887636.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/io_uring.c

index c314dc111d5d602b1f0d6de141239e12aeef6917..597b757e791e7548a1bf75c6796bc86d6fc7ce15 100644 (file)
@@ -974,14 +974,14 @@ static void __io_req_complete_post(struct io_kiocb *req)
                                req->link = NULL;
                        }
                }
+               io_put_kbuf_comp(req);
+               io_dismantle_req(req);
                io_req_put_rsrc(req);
                /*
                 * Selected buffer deallocation in io_clean_op() assumes that
                 * we don't hold ->completion_lock. Clean them here to avoid
                 * deadlocks.
                 */
-               io_put_kbuf_comp(req);
-               io_dismantle_req(req);
                io_put_task(req->task, 1);
                wq_list_add_head(&req->comp_list, &ctx->locked_free_list);
                ctx->locked_free_nr++;