diff options
author | Jens Axboe <axboe@kernel.dk> | 2019-10-28 21:49:21 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-11-01 08:35:31 -0600 |
commit | 62755e35dfb2b113c52b81cd96d01c20971c8e02 (patch) | |
tree | d8b0c898a5e1cf7ef8233af49773b18560198b83 /include/uapi/linux/io_uring.h | |
parent | 975c99a570967dd48e917dd7853867fee3febabd (diff) | |
download | linux-stable-62755e35dfb2b113c52b81cd96d01c20971c8e02.tar.gz linux-stable-62755e35dfb2b113c52b81cd96d01c20971c8e02.tar.bz2 linux-stable-62755e35dfb2b113c52b81cd96d01c20971c8e02.zip |
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>
Diffstat (limited to 'include/uapi/linux/io_uring.h')
-rw-r--r-- | include/uapi/linux/io_uring.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h index f82d90e617a6..6877cf8894db 100644 --- a/include/uapi/linux/io_uring.h +++ b/include/uapi/linux/io_uring.h @@ -33,6 +33,7 @@ struct io_uring_sqe { __u32 msg_flags; __u32 timeout_flags; __u32 accept_flags; + __u32 cancel_flags; }; __u64 user_data; /* data to be passed back at completion time */ union { @@ -70,6 +71,7 @@ struct io_uring_sqe { #define IORING_OP_TIMEOUT 11 #define IORING_OP_TIMEOUT_REMOVE 12 #define IORING_OP_ACCEPT 13 +#define IORING_OP_ASYNC_CANCEL 14 /* * sqe->fsync_flags |