]> www.infradead.org Git - users/hch/uuid.git/commit
io_uring: support for generic async request cancel
authorJens Axboe <axboe@kernel.dk>
Tue, 29 Oct 2019 03:49:21 +0000 (21:49 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 1 Nov 2019 14:35:31 +0000 (08:35 -0600)
commit62755e35dfb2b113c52b81cd96d01c20971c8e02
treed8b0c898a5e1cf7ef8233af49773b18560198b83
parent975c99a570967dd48e917dd7853867fee3febabd
io_uring: support for generic async request cancel

This adds support for IORING_OP_ASYNC_CANCEL, which will attempt to
cancel requests that have been punted to async context and are now
in-flight. This works for regular read/write requests to files, as
long as they haven't been started yet. For socket based IO (or things
like accept4(2)), we can cancel work that is already running as well.

To cancel a request, the sqe must have ->addr set to the user_data of
the request it wishes to cancel. If the request is cancelled
successfully, the original request is completed with -ECANCELED
and the cancel request is completed with a result of 0. If the
request was already running, the original may or may not complete
in error. The cancel request will complete with -EALREADY for that
case. And finally, if the request to cancel wasn't found, the cancel
request is completed with -ENOENT.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io-wq.c
fs/io-wq.h
fs/io_uring.c
include/uapi/linux/io_uring.h