author: Jens Axboe <axboe@kernel.dk> 2021-07-23 11:53:54 -0600
committer: Greg Kroah-Hartman <gregkh@linuxfoundation.org> 2021-08-08 09:06:56 +0200
commit: 989b27104a97642f6a1ed563ee32bec95a2552e2
parent: f7be9c72d1de9307a7fbc0c394996268d4fdc4e9
Commit Summary:
Diffstat:
1 file changed, 6 insertions, 1 deletion
diff --git a/fs/io-wq.c b/fs/io-wq.c
index 60f58efdb5f4..9efecdf025b9 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -736,7 +736,12 @@ static void io_wqe_enqueue(struct io_wqe *wqe, struct io_wq_work *work)
int work_flags;
unsigned long flags;
- if (test_bit(IO_WQ_BIT_EXIT, &wqe->wq->state)) {
+ /*
+ * If io-wq is exiting for this task, or if the request has explicitly
+ * been marked as one that should not get executed, cancel it here.
+ */
+ if (test_bit(IO_WQ_BIT_EXIT, &wqe->wq->state) ||
+ (work->flags & IO_WQ_WORK_CANCEL)) {
io_run_cancel(work, wqe);
return;
}