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>
Sun, 29 Jan 2023 22:17:40 +0000 (15:17 -0700)
commitc3f4d39ee4bc06f975ff45012398342ff276eb69
treec9b87d65bcfa0cfb1161e63468cbe3de2b125c49
parentd80c0f00d04766972c95e72b7535a842d6f4680d
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