@@ -1338,9 +1338,6 @@ int io_run_local_work(struct io_ring_ctx *ctx)
bool locked;
int ret;
- if (llist_empty(&ctx->work_llist))
- return 0;
-
__set_current_state(TASK_RUNNING);
locked = mutex_trylock(&ctx->uring_lock);
ret = __io_run_local_work(ctx, &locked);
@@ -274,7 +274,7 @@ static inline int io_run_task_work_ctx(struct io_ring_ctx *ctx)
int ret = 0;
int ret2;
- if (ctx->flags & IORING_SETUP_DEFER_TASKRUN)
+ if (!llist_empty(&ctx->work_llist))
ret = io_run_local_work(ctx);
/* want to run this after in case more is added */
There should be nothing in the ->work_llist for non DEFER_TASKRUN rings, so we can skip flag checks and test the list emptiness directly. Also move it out of io_run_local_work() for inlining. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> --- io_uring/io_uring.c | 3 --- io_uring/io_uring.h | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-)