When the manager thread starts up, it creates a worker per node for
the given context. Just let these get created dynamically, like we do
for adding further workers.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
struct io_wq *wq = data;
int node;
- /* create fixed workers */
refcount_set(&wq->refs, 1);
- for_each_node(node) {
- if (!node_online(node))
- continue;
- if (create_io_worker(wq, wq->wqes[node], IO_WQ_ACCT_BOUND))
- continue;
- set_bit(IO_WQ_BIT_ERROR, &wq->state);
- set_bit(IO_WQ_BIT_EXIT, &wq->state);
- goto out;
- }
-
complete(&wq->done);
while (!kthread_should_stop()) {
schedule_timeout(HZ);
}
-out:
if (refcount_dec_and_test(&wq->refs)) {
complete(&wq->done);
return 0;