Commit 170539bd authored by Jens Axboe's avatar Jens Axboe

io_uring: handle traditional task_work in FIFO order

For local task_work, which is used if IORING_SETUP_DEFER_TASKRUN is set,
we reverse the order of the lockless list before processing the work.
This is done to process items in the order in which they were queued, as
the llist always adds to the head.

Do the same for traditional task_work, so we have the same behavior for
both types.
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 4c98b891
......@@ -1266,7 +1266,7 @@ void tctx_task_work(struct callback_head *cb)
node = llist_del_all(&tctx->task_list);
if (node)
count = handle_tw_list(node, &ctx, &ts);
count = handle_tw_list(llist_reverse_order(node), &ctx, &ts);
ctx_flush_and_put(ctx, &ts);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment