mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:24:47 +01:00
io_uring/uring_cmd: explicitly disallow cancelations for IOPOLL
This currently isn't supported, and due to a recent commit, it also cannot easily be supported by io_uring due to hash_node and IOPOLL completion data overlapping. This can be revisited if we ever do support cancelations of requests that have gone to the block stack. Suggested-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
697a5284ad
commit
8661d0b142
1 changed files with 9 additions and 0 deletions
|
|
@ -104,6 +104,15 @@ void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd,
|
||||||
struct io_kiocb *req = cmd_to_io_kiocb(cmd);
|
struct io_kiocb *req = cmd_to_io_kiocb(cmd);
|
||||||
struct io_ring_ctx *ctx = req->ctx;
|
struct io_ring_ctx *ctx = req->ctx;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Doing cancelations on IOPOLL requests are not supported. Both
|
||||||
|
* because they can't get canceled in the block stack, but also
|
||||||
|
* because iopoll completion data overlaps with the hash_node used
|
||||||
|
* for tracking.
|
||||||
|
*/
|
||||||
|
if (ctx->flags & IORING_SETUP_IOPOLL)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!(cmd->flags & IORING_URING_CMD_CANCELABLE)) {
|
if (!(cmd->flags & IORING_URING_CMD_CANCELABLE)) {
|
||||||
cmd->flags |= IORING_URING_CMD_CANCELABLE;
|
cmd->flags |= IORING_URING_CMD_CANCELABLE;
|
||||||
io_ring_submit_lock(ctx, issue_flags);
|
io_ring_submit_lock(ctx, issue_flags);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue