From: Mathieu Desnoyers Date: Mon, 29 Jun 2015 22:45:07 +0000 (-0400) Subject: Fix: call_rcu_thread() affinity failure X-Git-Tag: v0.7.15~5 X-Git-Url: http://git.liburcu.org/?a=commitdiff_plain;h=5a631bd917d9173deda3fa06cf2ec22ab9db3194;hp=5a631bd917d9173deda3fa06cf2ec22ab9db3194;p=userspace-rcu.git Fix: call_rcu_thread() affinity failure Make call_rcu_thread() affine itself more persistently Currently, URCU simply fails if a call_rcu_thread() fails to affine itself. This is problematic when execution is constrained by cgroup and hotunplugged CPUs. This commit therefore makes call_rcu_thread() retry setting its affinity every 256 grace periods, but only if it detects that it migrated to a different CPU. Since sched_getcpu() is cheap on many architectures, this check is less costly than going through a system call. Reported-by: Michael Jeanson Suggested-by: Paul E. McKenney Acked-by: Paul E. McKenney Signed-off-by: Mathieu Desnoyers ---