summaryrefslogtreecommitdiffstats
path: root/io_uring
diff options
context:
space:
mode:
authorPavel Begunkov <asml.silence@gmail.com>2024-08-07 16:18:11 +0200
committerJens Axboe <axboe@kernel.dk>2024-08-25 16:27:01 +0200
commit489b80060cf645e958c4755c4b5032f234409f85 (patch)
tree9d7557a950043d2f7d8020fa2f759e37c23c0619 /io_uring
parentio_uring/kbuf: turn io_buffer_list booleans into flags (diff)
downloadlinux-489b80060cf645e958c4755c4b5032f234409f85.tar.xz
linux-489b80060cf645e958c4755c4b5032f234409f85.zip
io_uring/napi: refactor __io_napi_busy_loop()
we don't need to set ->napi_prefer_busy_poll if we're not going to poll, do the checks first and all polling preparation after. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/2ad7ede8cc7905328fc62e8c3805fdb11635ae0b.1723039801.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring')
-rw-r--r--io_uring/napi.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/io_uring/napi.c b/io_uring/napi.c
index 1de1d4d62925..64fbbceba980 100644
--- a/io_uring/napi.c
+++ b/io_uring/napi.c
@@ -299,10 +299,11 @@ void __io_napi_adjust_timeout(struct io_ring_ctx *ctx, struct io_wait_queue *iow
*/
void __io_napi_busy_loop(struct io_ring_ctx *ctx, struct io_wait_queue *iowq)
{
- iowq->napi_prefer_busy_poll = READ_ONCE(ctx->napi_prefer_busy_poll);
+ if (ctx->flags & IORING_SETUP_SQPOLL)
+ return;
- if (!(ctx->flags & IORING_SETUP_SQPOLL))
- io_napi_blocking_busy_loop(ctx, iowq);
+ iowq->napi_prefer_busy_poll = READ_ONCE(ctx->napi_prefer_busy_poll);
+ io_napi_blocking_busy_loop(ctx, iowq);
}
/*