[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1591541128.git.asml.silence@gmail.com>
Date: Sun, 7 Jun 2020 18:32:20 +0300
From: Pavel Begunkov <asml.silence@...il.com>
To: Jens Axboe <axboe@...nel.dk>, io-uring@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH 0/4] cancel all reqs of an exiting task
io_uring_flush() {
...
if (fatal_signal_pending(current) || (current->flags & PF_EXITING))
io_wq_cancel_pid(ctx->io_wq, task_pid_vnr(current));
}
This cancels only the first matched request. The pathset is mainly
about fixing that. [1,2] are preps, [3/4] is the fix.
The [4/4] tries to improve the worst case for io_uring_cancel_files(),
that's when they are a lot of inflights with ->files. Instead of doing
{kill(); wait();} one by one, it cancels all of them at once.
Pavel Begunkov (4):
io-wq: reorder cancellation pending -> running
io-wq: add an option to cancel all matched reqs
io_uring: cancel all task's requests on exit
io_uring: batch cancel in io_uring_cancel_files()
fs/io-wq.c | 108 ++++++++++++++++++++++++++------------------------
fs/io-wq.h | 3 +-
fs/io_uring.c | 29 ++++++++++++--
3 files changed, 83 insertions(+), 57 deletions(-)
--
2.24.0
Powered by blists - more mailing lists