workqueue: introduce cwq_set_max_active() helper for thaw_workqueues()
Using a helper instead of open code makes thaw_workqueues() clearer. The helper will also be used by the next patch. tj: Slight update to comment and description. Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
b3f9f405a2
commit
9f4bd4cddb
@ -3366,6 +3366,26 @@ void destroy_workqueue(struct workqueue_struct *wq)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(destroy_workqueue);
|
||||
|
||||
/**
|
||||
* cwq_set_max_active - adjust max_active of a cwq
|
||||
* @cwq: target cpu_workqueue_struct
|
||||
* @max_active: new max_active value.
|
||||
*
|
||||
* Set @cwq->max_active to @max_active and activate delayed works if
|
||||
* increased.
|
||||
*
|
||||
* CONTEXT:
|
||||
* spin_lock_irq(gcwq->lock).
|
||||
*/
|
||||
static void cwq_set_max_active(struct cpu_workqueue_struct *cwq, int max_active)
|
||||
{
|
||||
cwq->max_active = max_active;
|
||||
|
||||
while (!list_empty(&cwq->delayed_works) &&
|
||||
cwq->nr_active < cwq->max_active)
|
||||
cwq_activate_first_delayed(cwq);
|
||||
}
|
||||
|
||||
/**
|
||||
* workqueue_set_max_active - adjust max_active of a workqueue
|
||||
* @wq: target workqueue
|
||||
@ -3792,11 +3812,7 @@ void thaw_workqueues(void)
|
||||
continue;
|
||||
|
||||
/* restore max_active and repopulate worklist */
|
||||
cwq->max_active = wq->saved_max_active;
|
||||
|
||||
while (!list_empty(&cwq->delayed_works) &&
|
||||
cwq->nr_active < cwq->max_active)
|
||||
cwq_activate_first_delayed(cwq);
|
||||
cwq_set_max_active(cwq, wq->saved_max_active);
|
||||
}
|
||||
|
||||
for_each_worker_pool(pool, gcwq)
|
||||
|
Loading…
Reference in New Issue
Block a user