From: Pavel Begunkov Date: Fri, 13 May 2022 10:24:56 +0000 (+0100) Subject: io_uring: avoid io-wq -EAGAIN looping for !IOPOLL X-Git-Tag: howlett/maple/20220722_2~558^2~19 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e0deb6a025ae8c850dc8685be39fb27b06c88736;p=users%2Fjedix%2Flinux-maple.git io_uring: avoid io-wq -EAGAIN looping for !IOPOLL If an opcode handler semi-reliably returns -EAGAIN, io_wq_submit_work() might continue busily hammer the same handler over and over again, which is not ideal. The -EAGAIN handling in question was put there only for IOPOLL, so restrict it to IOPOLL mode only where there is no other recourse than to retry as we cannot wait. Fixes: def596e9557c9 ("io_uring: support for IO polling") Signed-off-by: Pavel Begunkov Link: https://lore.kernel.org/r/f168b4f24181942f3614dd8ff648221736f572e6.1652433740.git.asml.silence@gmail.com Signed-off-by: Jens Axboe --- diff --git a/fs/io_uring.c b/fs/io_uring.c index 3621898198988..f5f38329c8232 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -7573,6 +7573,8 @@ fail: * wait for request slots on the block side. */ if (!needs_poll) { + if (!(req->ctx->flags & IORING_SETUP_IOPOLL)) + break; cond_resched(); continue; }