Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f4bd4cd authored by Lai Jiangshan's avatar Lai Jiangshan Committed by Tejun Heo
Browse files

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: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent b3f9f405
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -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)