diff options
author | Jens Axboe <axboe@kernel.dk> | 2024-01-28 20:11:55 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2024-02-08 13:27:06 -0700 |
commit | 521223d7c229f83915619f888c99e952f24dc39f (patch) | |
tree | b19885749949ac462562ebc474b8964edc85331f /io_uring/cancel.c | |
parent | 4bcb982cce74e18155fba0d97394ca9634e0d8f0 (diff) | |
download | linux-stable-521223d7c229f83915619f888c99e952f24dc39f.tar.gz linux-stable-521223d7c229f83915619f888c99e952f24dc39f.tar.bz2 linux-stable-521223d7c229f83915619f888c99e952f24dc39f.zip |
io_uring/cancel: don't default to setting req->work.cancel_seq
Just leave it unset by default, avoiding dipping into the last
cacheline (which is otherwise untouched) for the fast path of using
poll to drive networked traffic. Add a flag that tells us if the
sequence is valid or not, and then we can defer actually assigning
the flag and sequence until someone runs cancelations.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/cancel.c')
-rw-r--r-- | io_uring/cancel.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/io_uring/cancel.c b/io_uring/cancel.c index 8a8b07dfc444..acfcdd7f059a 100644 --- a/io_uring/cancel.c +++ b/io_uring/cancel.c @@ -58,9 +58,8 @@ bool io_cancel_req_match(struct io_kiocb *req, struct io_cancel_data *cd) return false; if (cd->flags & IORING_ASYNC_CANCEL_ALL) { check_seq: - if (cd->seq == req->work.cancel_seq) + if (io_cancel_match_sequence(req, cd->seq)) return false; - req->work.cancel_seq = cd->seq; } return true; |