summaryrefslogtreecommitdiff
path: root/fs/io-wq.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2021-02-16 07:17:00 -0700
committerJens Axboe <axboe@kernel.dk>2021-02-21 17:25:22 -0700
commit7c25c0d16ef3c37e49c593ac92f69fa3884d4bb9 (patch)
tree2fe3fa25ca066312bf514c8e34fba0575db99af7 /fs/io-wq.c
parent27131549060ee87f1c50c56539b8f6c4c1a4acec (diff)
io_uring: remove the need for relying on an io-wq fallback worker
We hit this case when the task is exiting, and we need somewhere to do background cleanup of requests. Instead of relying on the io-wq task manager to do this work for us, just stuff it somewhere where we can safely run it ourselves directly. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/io-wq.c')
-rw-r--r--fs/io-wq.c12
1 files changed, 0 insertions, 12 deletions
diff --git a/fs/io-wq.c b/fs/io-wq.c
index c36bbcd823ce..800b299f9772 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -16,7 +16,6 @@
#include <linux/kthread.h>
#include <linux/rculist_nulls.h>
#include <linux/fs_struct.h>
-#include <linux/task_work.h>
#include <linux/blk-cgroup.h>
#include <linux/audit.h>
#include <linux/cpu.h>
@@ -775,9 +774,6 @@ static int io_wq_manager(void *data)
complete(&wq->done);
while (!kthread_should_stop()) {
- if (current->task_works)
- task_work_run();
-
for_each_node(node) {
struct io_wqe *wqe = wq->wqes[node];
bool fork_worker[2] = { false, false };
@@ -800,9 +796,6 @@ static int io_wq_manager(void *data)
schedule_timeout(HZ);
}
- if (current->task_works)
- task_work_run();
-
out:
if (refcount_dec_and_test(&wq->refs)) {
complete(&wq->done);
@@ -1160,11 +1153,6 @@ void io_wq_destroy(struct io_wq *wq)
__io_wq_destroy(wq);
}
-struct task_struct *io_wq_get_task(struct io_wq *wq)
-{
- return wq->manager;
-}
-
static bool io_wq_worker_affinity(struct io_worker *worker, void *data)
{
struct task_struct *task = worker->task;