io_uring: rearrange defer list checks
authorPavel Begunkov <asml.silence@gmail.com>
Thu, 5 Jan 2023 11:22:20 +0000 (11:22 +0000)
committerJens Axboe <axboe@kernel.dk>
Sun, 29 Jan 2023 22:17:39 +0000 (15:17 -0700)
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>
io_uring/io_uring.c
io_uring/io_uring.h

index db623b3185c823487e264f32a824189ebd49cee2..da9b0397f9a1340babc7bd0f54e8011b22196fa9 100644 (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);
index ab4b2a1c3b7e80fba53d0c090962fd99a475aea4..7607a4992a943e2eb37933697f4ebf90c9801046 100644 (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 */