• Pavel Begunkov's avatar
    io_uring: clean up tctx_task_work() · 6294f368
    Pavel Begunkov authored
    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: default avatarPavel Begunkov <asml.silence@gmail.com>
    [axboe: fix missing ->task_running reset on task_work_add() failure]
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    6294f368
io_uring.c 253 KB