Skip to content

Commit

Permalink
io-wq: make io_wq_fork_thread() available to other users
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jens Axboe committed Feb 22, 2021
1 parent bf1daa4 commit 843bbfd
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
8 changes: 4 additions & 4 deletions fs/io-wq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 2 additions & 0 deletions fs/io-wq.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 843bbfd

Please sign in to comment.