diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2020-11-15 12:56:32 +0000 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-12-09 12:04:01 -0700 |
commit | c98de08c990e190fc7cc3aaf8079b4a0674c6425 (patch) | |
tree | d5c7bfd8f228e42c32a3392bd7e253c543e96e39 /scripts/gdb/linux/tasks.py | |
parent | 10cad2c40dcb04bb46b2bf399e00ca5ea93d36b0 (diff) |
io_uring: replace inflight_wait with tctx->wait
As tasks now cancel only theirs requests, and inflight_wait is awaited
only in io_uring_cancel_files(), which should be called with ->in_idle
set, instead of keeping a separate inflight_wait use tctx->wait.
That will add some spurious wakeups but actually is safer from point of
not hanging the task.
e.g.
task1 | IRQ
| *start* io_complete_rw_common(link)
| link: req1 -> req2 -> req3(with files)
*cancel_files() |
io_wq_cancel(), etc. |
| put_req(link), adds to io-wq req2
schedule() |
So, task1 will never try to cancel req2 or req3. If req2 is
long-standing (e.g. read(empty_pipe)), this may hang.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'scripts/gdb/linux/tasks.py')
0 files changed, 0 insertions, 0 deletions