From: Mathieu Desnoyers Date: Mon, 29 Jun 2015 22:45:07 +0000 (-0400) Subject: Fix: call_rcu_thread() affinity failure X-Git-Tag: v0.9.0~52 X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=commitdiff_plain;h=8e3690dbc1ee221a9e375ce16621b5bfd93a61cc;hp=8e3690dbc1ee221a9e375ce16621b5bfd93a61cc;ds=sidebyside 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 ---