From 5e371265ea1d3e0cd02236b1a6d79fe322523ae8 Mon Sep 17 00:00:00 2001 From: Pavel Begunkov Date: Fri, 24 Sep 2021 22:00:04 +0100 Subject: [PATCH] io_uring: disable draining earlier Clear ->drain_active in two more cases where we check for a need of draining. It's not a bug, but still may lead to some extra requests being punted to io-wq, and that may be not desirable. Signed-off-by: Pavel Begunkov Link: https://lore.kernel.org/r/d20b265f77bb4e8860b15b9987252c7c711dfcba.1632516769.git.asml.silence@gmail.com Signed-off-by: Jens Axboe --- 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 5a06063..fd3dc64 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -6461,8 +6461,10 @@ static bool io_drain_req(struct io_kiocb *req) seq = io_get_sequence(req); /* Still a chance to pass the sequence check */ - if (!req_need_defer(req, seq) && list_empty_careful(&ctx->defer_list)) + if (!req_need_defer(req, seq) && list_empty_careful(&ctx->defer_list)) { + ctx->drain_active = false; return false; + } ret = io_req_prep_async(req); if (ret) @@ -6481,6 +6483,7 @@ fail: spin_unlock(&ctx->completion_lock); kfree(de); io_queue_async_work(req, NULL); + ctx->drain_active = false; return true; } -- 2.7.4