From: Jens Axboe Date: Thu, 21 Nov 2024 15:27:10 +0000 (-0700) Subject: io_uring: make task_work pending check dependent on ring type X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=a3ec916ea207aad844102f54b10ccdbe2bbb79a2;p=linux-block.git io_uring: make task_work pending check dependent on ring type There's no need to check for generic task_work for DEFER_TASKRUN, if we have local task_work pending. This avoids dipping into the huge task_struct, if we have normal task_work pending. Signed-off-by: Jens Axboe --- diff --git a/io_uring/io_uring.h b/io_uring/io_uring.h index d59c12277d58..56becba55c7e 100644 --- a/io_uring/io_uring.h +++ b/io_uring/io_uring.h @@ -388,7 +388,9 @@ static inline bool io_local_work_pending(struct io_ring_ctx *ctx) static inline bool io_task_work_pending(struct io_ring_ctx *ctx) { - return task_work_pending(current) || io_local_work_pending(ctx); + if (ctx->flags & IORING_SETUP_DEFER_TASKRUN && io_local_work_pending(ctx)) + return true; + return task_work_pending(current); } static inline void io_tw_lock(struct io_ring_ctx *ctx, io_tw_token_t tw)