Re: Why does d_splice_alias need to check IS_ROOT?

From: Al Viro
Date: Sat May 26 2018 - 13:12:17 EST


On Sun, May 27, 2018 at 12:33:40AM +0800, Lei Chen wrote:
> Hello list,
>
> I'm insteresting in how hard link and denry lookup work and their
> implementation.
>
> I know that this interface tries to connect an inode to a dentry, but
> why does it need
> to check whether the inode alias IS_ROOT if the inode represents a directory?
> And the code process in different way according to check result. What
> occasions
> are they used for?

If it's disconnected (and not an ancestor of the place where we want it),
we can just move it in place, no questions asked. If it is *NOT*
disconnected, the only thing we can do is to detach it from where it
is and move it over. Which takes a lot more care wrt locking.