On Fri, Jun 8, 2012 at 2:28 PM, Kirill A. Shutemov
[off-list ref] wrote:
From: "Kirill A. Shutemov" <redacted>
There's no reason to call rcu_barrier() on every deactivate_locked_super().
We only need to make sure that all delayed rcu free inodes are flushed
before we destroy related cache.
Removing rcu_barrier() from deactivate_locked_super() affects some
fas paths. E.g. on my machine exit_group() of a last process in IPC
namespace takes 0.07538s. rcu_barrier() takes 0.05188s of that time.
I think we should just delete it.
kmem_cache_destroy() (at least for SLUB) already has:
if (s->flags & SLAB_DESTROY_BY_RCU)
rcu_barrier();
in it. But I think it's too late - it gets called *after* we do
kmem_cache_close(), and I get the feeling that we should do it before.
Shouldn't that be sufficient? And if other slab allocators don't have
this, we should add it to them too.
Hmm?
Linus
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs