aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-14 12:06:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-14 12:06:29 -0400
commit7fb30d2b606beb78cda805647faf4d3cdfb39c42 (patch)
treebdc82e9f3bc812dceb87d59108031eeab860cf2f /kernel
parenta2c7a54fcc36dc3d0d461e883d9535f8f52f5a3f (diff)
parentd3251859168b0b12841e1b90d6d768ab478dc23d (diff)
Merge branch 'for-3.10-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue fix from Tejun Heo: "A fix for a workqueue_congested() regression that broke fscache" * 'for-3.10-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: workqueue: workqueue_congested() shouldn't translate WORK_CPU_UNBOUND into node number
Diffstat (limited to 'kernel')
-rw-r--r--kernel/workqueue.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 4aa9f5bc6b2d..1ae602809efb 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -4311,6 +4311,12 @@ bool current_is_workqueue_rescuer(void)
4311 * no synchronization around this function and the test result is 4311 * no synchronization around this function and the test result is
4312 * unreliable and only useful as advisory hints or for debugging. 4312 * unreliable and only useful as advisory hints or for debugging.
4313 * 4313 *
4314 * If @cpu is WORK_CPU_UNBOUND, the test is performed on the local CPU.
4315 * Note that both per-cpu and unbound workqueues may be associated with
4316 * multiple pool_workqueues which have separate congested states. A
4317 * workqueue being congested on one CPU doesn't mean the workqueue is also
4318 * contested on other CPUs / NUMA nodes.
4319 *
4314 * RETURNS: 4320 * RETURNS:
4315 * %true if congested, %false otherwise. 4321 * %true if congested, %false otherwise.
4316 */ 4322 */
@@ -4321,6 +4327,9 @@ bool workqueue_congested(int cpu, struct workqueue_struct *wq)
4321 4327
4322 rcu_read_lock_sched(); 4328 rcu_read_lock_sched();
4323 4329
4330 if (cpu == WORK_CPU_UNBOUND)
4331 cpu = smp_processor_id();
4332
4324 if (!(wq->flags & WQ_UNBOUND)) 4333 if (!(wq->flags & WQ_UNBOUND))
4325 pwq = per_cpu_ptr(wq->cpu_pwqs, cpu); 4334 pwq = per_cpu_ptr(wq->cpu_pwqs, cpu);
4326 else 4335 else