On Mon, Sep 9, 2013 at 10:29 AM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > I'm not sure I like mixing rcu_read_lock() into that - d_path() and friends > can do that themselves just fine (it needs to be taken when seq is even), > and e.g. d_walk() doesn't need it at all. Other than that, I'm OK with > this variant. Hmm.. I think you need the RCU read lock even when you get the write_seqlock(). Yes, getting the seqlock for write implies that you get a spinlock and in many normal circumstances that basically is equvalent to being rcu-locked, but afaik in some configurations that is *not* sufficient protection against an RCU grace period on another CPU. You need to do a real rcu_read_lock that increments that whole rcu_read_lock_nesting level, which a spinlock won't do. And while the rename sequence lock protects against _renames_, it does not protect against just plain dentries getting free'd under memory pressure. So I think the RCU-readlockness really needs to be independent of the sequence lock. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html