OSDN Git Service

io_uring: reliably cancel linked timeouts
authorPavel Begunkov <asml.silence@gmail.com>
Thu, 4 Mar 2021 13:59:25 +0000 (13:59 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 4 Mar 2021 22:45:01 +0000 (15:45 -0700)
commitdd59a3d595cc10230ded4c8b727b096e16bceeb5
tree137825498fc28aa2199bcf7350561fc7506f8eed
parentb05a1bcd40184f12f2cd87db79e871aa8c17563f
io_uring: reliably cancel linked timeouts

Linked timeouts are fired asynchronously (i.e. soft-irq), and use
generic cancellation paths to do its stuff, including poking into io-wq.
The problem is that it's racy to access tctx->io_wq, as
io_uring_task_cancel() and others may be happening at this exact moment.
Mark linked timeouts with REQ_F_INLIFGHT for now, making sure there are
no timeouts before io-wq destraction.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c