Re: More parallel atomic_open/d_splice_alias fun with NFS and possibly more FSes.

From: Al Viro
Date: Tue Jul 05 2016 - 23:21:01 EST


On Tue, Jul 05, 2016 at 08:29:37PM -0400, Oleg Drokin wrote:
> > + /* Otherwise we just unhash it to be rehashed afresh via
> > + * lookup if necessary
> > + */
> > + d_drop(dentry);
>
> So we can even drop this part and retain the top condition as it was.
> d_add does not care if the dentry we are feeding it was hashed or not,
> so do you see any downsides to doing that I wonder?

d_add() on hashed dentry will end up reaching this:
static void __d_rehash(struct dentry * entry, struct hlist_bl_head *b)
{
BUG_ON(!d_unhashed(entry));