io_uring: rearrange defer list checks

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>
Link: https://lore.kernel.org/r/331d63fd15ca79b35b95c82a82d9246110686392.1672916894.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Pavel Begunkov 2023-01-05 11:22:20 +00:00 committed by Jens Axboe
parent 6d796c50f8
commit 0c4fe008c9
2 changed files with 1 additions and 4 deletions

View File

@ -1343,9 +1343,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);

View File

@ -289,7 +289,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 */