diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2012-09-19 10:40:48 -0700 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2012-09-19 10:40:48 -0700 |
commit | 70369b117a8fc5ac18a635ced23ee49f8e722e7b (patch) | |
tree | deec5ade1639ccebe8db218e5b8a5632d86317ac /kernel/workqueue.c | |
parent | 9f4bd4cddbb50d7617353102e10ce511c5ef6df2 (diff) | |
download | lwn-70369b117a8fc5ac18a635ced23ee49f8e722e7b.tar.gz lwn-70369b117a8fc5ac18a635ced23ee49f8e722e7b.zip |
workqueue: use cwq_set_max_active() helper for workqueue_set_max_active()
workqueue_set_max_active() may increase ->max_active without
activating delayed works and may make the activation order differ from
the queueing order. Both aren't strictly bugs but the resulting
behavior could be a bit odd.
To make things more consistent, use cwq_set_max_active() helper which
immediately makes use of the newly increased max_mactive if there are
delayed work items and also keeps the activation order.
tj: Slight update to description.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/workqueue.c')
-rw-r--r-- | kernel/workqueue.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index b5d722548ffd..4f5c61f8b0e7 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3413,7 +3413,7 @@ void workqueue_set_max_active(struct workqueue_struct *wq, int max_active) if (!(wq->flags & WQ_FREEZABLE) || !(gcwq->flags & GCWQ_FREEZING)) - get_cwq(gcwq->cpu, wq)->max_active = max_active; + cwq_set_max_active(get_cwq(gcwq->cpu, wq), max_active); spin_unlock_irq(&gcwq->lock); } |