From: Pavel Begunkov Date: Fri, 24 Sep 2021 21:00:04 +0000 (+0100) Subject: io_uring: disable draining earlier X-Git-Tag: v6.6.17~9008^2~62 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5e371265ea1d3e0cd02236b1a6d79fe322523ae8;p=platform%2Fkernel%2Flinux-rpi.git 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 --- 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; }