Hello Tejun, Thanks a lot for looking into this issue as it seems to affect a lot of users!
On Sat, Jan 14, 2017 at 12:54:42AM -0500, Tejun Heo wrote: > This patch updates the cache release path so that it simply uses > call_rcu() instead of the synchronous rcu_barrier() + custom batching. > This doesn't cost more while being logically simpler and way more > scalable. The point of rcu_barrier() is to wait until all rcu calls freeing slabs from the cache being destroyed are over (rcu_free_slab, kmem_rcu_free). I'm not sure if call_rcu() guarantees that for all rcu implementations too. If it did, why would we need rcu_barrier() at all?