io_uring: clean up tctx_task_work()
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 10 Aug 2021 16:53:55 +0000 (17:53 +0100)
committerJens Axboe <axboe@kernel.dk>
Wed, 11 Aug 2021 22:35:42 +0000 (16:35 -0600)
commit8de254e05555fab96226be5bd062f131df14d9e0
tree92dfb727e51a97328e34caa0acda7f8c502d522c
parent3b8fa628e7e55a855871a4e43666fd5f4f710d9d
io_uring: clean up tctx_task_work()

After recent fixes, tctx_task_work() always does proper spinlocking
before looking into ->task_list, so now we don't need atomics for
->task_state, replace it with non-atomic task_running using the critical
section.

Tide it up, combine two separate block with spinlocking, and always try
to splice in there, so we do less locking when new requests are arriving
during the function execution.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
[axboe: fix missing ->task_running reset on task_work_add() failure]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c