diff options
author | Jens Axboe <axboe@kernel.dk> | 2020-10-30 09:36:41 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-11-04 10:22:56 -0700 |
commit | 3dd1680d1418f22f7ddaf98a4eab66285a099b3e (patch) | |
tree | b7dda128ec5c7d8d2baf53b1277fe68d2bf366ec /fs | |
parent | 3cea11cd5e3b00d91caf0b4730194039b45c5891 (diff) | |
download | linux-stable-3dd1680d1418f22f7ddaf98a4eab66285a099b3e.tar.gz linux-stable-3dd1680d1418f22f7ddaf98a4eab66285a099b3e.tar.bz2 linux-stable-3dd1680d1418f22f7ddaf98a4eab66285a099b3e.zip |
io-wq: cancel request if it's asking for files and we don't have them
This can't currently happen, but will be possible shortly. Handle missing
files just like we do not being able to grab a needed mm, and mark the
request as needing cancelation.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/io-wq.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/io-wq.c b/fs/io-wq.c index 02894df7656d..b53c055bea6a 100644 --- a/fs/io-wq.c +++ b/fs/io-wq.c @@ -482,6 +482,10 @@ static void io_impersonate_work(struct io_worker *worker, current->files = work->identity->files; current->nsproxy = work->identity->nsproxy; task_unlock(current); + if (!work->identity->files) { + /* failed grabbing files, ensure work gets cancelled */ + work->flags |= IO_WQ_WORK_CANCEL; + } } if ((work->flags & IO_WQ_WORK_FS) && current->fs != work->identity->fs) current->fs = work->identity->fs; |