io_uring: optimise deferred tw execution
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 9 Jan 2023 14:46:13 +0000 (14:46 +0000)
committerJens Axboe <axboe@kernel.dk>
Wed, 11 Jan 2023 17:25:36 +0000 (10:25 -0700)
commit607947314b4c9f8c979f79c095da9156b41c82b8
tree87df780b2da28a24c413ed8cd936f0040f5a9fe9
parent6cd16656e2ddc63ee7aae7c7f27edcab933a0e09
io_uring: optimise deferred tw execution

We needed fake nodes in __io_run_local_work() and to avoid unecessary wake
ups while the task already running task_works, but we don't need them
anymore since wake ups are protected by cq_waiting, which is always
cleared by the time we're executing deferred task_work items.

Note that because of loose sync around cq_waiting clearing
io_req_local_work_add() may wake the task more than once, but that's
fine and should be rare to not hurt perf.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/8839534891f0a2f1076e78554a31ea7e099f7de5.1673274244.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/io_uring.c