[3.16.y-ckt stable] Patch "vmstat: explicitly schedule per-cpu work on the CPU we need it to run on" has been added to the 3.16.y-ckt tree
Luis Henriques
luis.henriques at canonical.com
Thu Feb 25 18:32:11 UTC 2016
This is a note to let you know that I have just added a patch titled
vmstat: explicitly schedule per-cpu work on the CPU we need it to run on
to the linux-3.16.y-queue branch of the 3.16.y-ckt extended stable tree
which can be found at:
http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.16.y-queue
This patch is scheduled to be released in version 3.16.7-ckt25.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.16.y-ckt tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
Thanks.
-Luis
---8<------------------------------------------------------------
>From 4b392570a9cd19fa6a06dde6ee0e7c8e76937056 Mon Sep 17 00:00:00 2001
From: Linus Torvalds <torvalds at linux-foundation.org>
Date: Mon, 22 Feb 2016 10:08:52 -0800
Subject: vmstat: explicitly schedule per-cpu work on the CPU we need it to run
on
commit 176bed1de5bf977938cad26551969eca8f0883b1 upstream.
The vmstat code uses "schedule_delayed_work_on()" to do the initial
startup of the delayed work on the right CPU, but then once it was
started it would use the non-cpu-specific "schedule_delayed_work()" to
re-schedule it on that CPU.
That just happened to schedule it on the same CPU historically (well, in
almost all situations), but the code _requires_ this work to be per-cpu,
and should say so explicitly rather than depend on the non-cpu-specific
scheduling to schedule on the current CPU.
The timer code is being changed to not be as single-minded in always
running things on the calling CPU.
See also commit 874bbfe600a6 ("workqueue: make sure delayed work run in
local cpu") that for now maintains the local CPU guarantees just in case
there are other broken users that depended on the accidental behavior.
js: 3.12 backport
Cc: Christoph Lameter <cl at linux.com>
Cc: Tejun Heo <tj at kernel.org>
Cc: Mike Galbraith <mgalbraith at suse.com>
Cc: Michal Hocko <mhocko at suse.com>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby at suse.cz>
[ kamal: backport to 3.16-stable: use queue_delayed_work_on() ]
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
---
mm/vmstat.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 038f9418b234..8c0c76083562 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1233,7 +1233,8 @@ int sysctl_stat_interval __read_mostly = HZ;
static void vmstat_update(struct work_struct *w)
{
refresh_cpu_vm_stats();
- queue_delayed_work(vmstat_wq, this_cpu_ptr(&vmstat_work),
+ queue_delayed_work_on(smp_processor_id(), vmstat_wq,
+ this_cpu_ptr(&vmstat_work),
round_jiffies_relative(sysctl_stat_interval));
}
More information about the kernel-team
mailing list