On Tue, Jul 12, 2011 at 4:48 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > All flakiness of the locking "order" aside, here we simply lock two dentries > that might be nowhere near each other by now. Hell, by that point the parent > might've been moved under (what used to be) child. Or it might have address > greater than that of child and be not an ancestor anymore. Note that no > i_mutex, etc. is held at that point, so there's no external serialization > to save our arses... So why wouldn't it be sufficient to just take the s_vfs_rename_mutex in the caller? We're only talking d_materialise_unique(), no? That said, looking at NFS (nfs_prime_dcache), we do seem to hold the parent directory inode semaphore. So I'm not seeing any renames happening wrt the entry we found and the parent. So the relationship there should be safe regardless, no? I didn't check the other users of d_materialise_unique() (ciph and ceph) but at least the cifs use is in "readdir.c", which implies similar directory inode mutex issues. 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