summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2021-02-17 21:05:41 -0700
committerJens Axboe <axboe@kernel.dk>2021-02-21 17:25:22 -0700
commit843bbfd49f02caab7186910480a86378bb84e975 (patch)
treeb3004422b8d259e74b8ec2f345af9d42866955a3 /fs
parentbf1daa4bfc77a60e58bed392e659c9ddd0174340 (diff)
downloadlinux-843bbfd49f02caab7186910480a86378bb84e975.tar.gz
linux-843bbfd49f02caab7186910480a86378bb84e975.tar.bz2
linux-843bbfd49f02caab7186910480a86378bb84e975.zip
io-wq: make io_wq_fork_thread() available to other users
We want to use this in io_uring proper as well, for the SQPOLL thread. Rename it from fork_thread() to io_wq_fork_thread(), and make it available through the io-wq.h header. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs')
-rw-r--r--fs/io-wq.c8
-rw-r--r--fs/io-wq.h2
2 files changed, 6 insertions, 4 deletions
diff --git a/fs/io-wq.c b/fs/io-wq.c
index 3a506f1c7838..b0d09f60200b 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -592,7 +592,7 @@ static int task_thread_unbound(void *data)
return task_thread(data, IO_WQ_ACCT_UNBOUND);
}
-static pid_t fork_thread(int (*fn)(void *), void *arg)
+pid_t io_wq_fork_thread(int (*fn)(void *), void *arg)
{
unsigned long flags = CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|
CLONE_IO|SIGCHLD;
@@ -622,9 +622,9 @@ static bool create_io_worker(struct io_wq *wq, struct io_wqe *wqe, int index)
spin_lock_init(&worker->lock);
if (index == IO_WQ_ACCT_BOUND)
- pid = fork_thread(task_thread_bound, worker);
+ pid = io_wq_fork_thread(task_thread_bound, worker);
else
- pid = fork_thread(task_thread_unbound, worker);
+ pid = io_wq_fork_thread(task_thread_unbound, worker);
if (pid < 0) {
kfree(worker);
return false;
@@ -1012,7 +1012,7 @@ struct io_wq *io_wq_create(unsigned bounded, struct io_wq_data *data)
refcount_set(&wq->refs, 1);
current->flags |= PF_IO_WORKER;
- ret = fork_thread(io_wq_manager, wq);
+ ret = io_wq_fork_thread(io_wq_manager, wq);
current->flags &= ~PF_IO_WORKER;
if (ret >= 0) {
wait_for_completion(&wq->done);
diff --git a/fs/io-wq.h b/fs/io-wq.h
index 584f0bd5a83d..23f6cbd620f8 100644
--- a/fs/io-wq.h
+++ b/fs/io-wq.h
@@ -106,6 +106,8 @@ void io_wq_destroy(struct io_wq *wq);
void io_wq_enqueue(struct io_wq *wq, struct io_wq_work *work);
void io_wq_hash_work(struct io_wq_work *work, void *val);
+pid_t io_wq_fork_thread(int (*fn)(void *), void *arg);
+
static inline bool io_wq_is_hashed(struct io_wq_work *work)
{
return work->flags & IO_WQ_WORK_HASHED;