]> git.baikalelectronics.ru Git - kernel.git/commit
vmstat: explicitly schedule per-cpu work on the CPU we need it to run on
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 15 Oct 2015 20:01:50 +0000 (13:01 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 15 Oct 2015 20:01:50 +0000 (13:01 -0700)
commitbae257621c3861090c6699afc6e6cdefbfe529ad
tree45adb32e0c98e146ada11f1db777dfd0eced1bbc
parent6bcbd311e9a2f4213aaa0a2f2d8cdfe79eb3121f
vmstat: explicitly schedule per-cpu work on the CPU we need it to run on

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 eacaa1187763 ("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.

Cc: Christoph Lameter <cl@linux.com>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/vmstat.c