workqueue: Make rescuer initialization as the last step of the creation of a new wq
For early wq allocation, rescuer initialization is the last step of the creation of a new wq. Make the behavior the same for all allocations. Prepare for initializing rescuer's affinities with the default pwq's affinities. Prepare for moving the whole workqueue initializing procedure into wq_pool_mutex and cpu hotplug locks. Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Waiman Long <longman@redhat.com> Signed-off-by: Lai Jiangshan <jiangshan.ljs@antgroup.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
c3138f3881
commit
c5178e6ca6
@ -5681,9 +5681,6 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
|
||||
if (alloc_and_link_pwqs(wq) < 0)
|
||||
goto err_free_node_nr_active;
|
||||
|
||||
if (wq_online && init_rescuer(wq) < 0)
|
||||
goto err_destroy;
|
||||
|
||||
/*
|
||||
* wq_pool_mutex protects global freeze state and workqueues list.
|
||||
* Grab it, adjust max_active and add the new @wq to workqueues
|
||||
@ -5699,6 +5696,9 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
|
||||
|
||||
mutex_unlock(&wq_pool_mutex);
|
||||
|
||||
if (wq_online && init_rescuer(wq) < 0)
|
||||
goto err_destroy;
|
||||
|
||||
if ((wq->flags & WQ_SYSFS) && workqueue_sysfs_register(wq))
|
||||
goto err_destroy;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user