diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2021-03-04 14:59:24 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-03-04 23:44:50 +0100 |
commit | b05a1bcd40184f12f2cd87db79e871aa8c17563f (patch) | |
tree | 6bf16f9b3f0d73084341fb55cf4c340f0aed73bc /fs/io_uring.c | |
parent | io-wq: ensure all pending work is canceled on exit (diff) | |
download | linux-b05a1bcd40184f12f2cd87db79e871aa8c17563f.tar.xz linux-b05a1bcd40184f12f2cd87db79e871aa8c17563f.zip |
io_uring: cancel-match based on flags
Instead of going into request internals, like checking req->file->f_op,
do match them based on REQ_F_INFLIGHT, it's set only when we want it to
be reliably cancelled.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to '')
-rw-r--r-- | fs/io_uring.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c index b1734efdc7e8..fb4abea1e5d6 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -703,7 +703,7 @@ enum { /* fail rest of links */ REQ_F_FAIL_LINK = BIT(REQ_F_FAIL_LINK_BIT), - /* on inflight list */ + /* on inflight list, should be cancelled and waited on exit reliably */ REQ_F_INFLIGHT = BIT(REQ_F_INFLIGHT_BIT), /* read/write uses file position */ REQ_F_CUR_POS = BIT(REQ_F_CUR_POS_BIT), @@ -1069,7 +1069,7 @@ static bool io_match_task(struct io_kiocb *head, return true; io_for_each_link(req, head) { - if (req->file && req->file->f_op == &io_uring_fops) + if (req->flags & REQ_F_INFLIGHT) return true; if (req->task->files == files) return true; |