• Josef Bacik's avatar
    Btrfs: use d_obtain_alias when mounting subvol/subvolid · ba5b8958
    Josef Bacik authored
    Currently what we do is just wrong.  We either
    
    1) Alloc a new "root" dentry with sb->s_root as it's parent which is just wrong
    as we could walk into this subvol later on via another path and hilarity could
    ensue.  Also we don't check the return value of d_splice_alias which isn't good
    either.
    
    or
    
    2) Do a d_find_alias() which we could have lost our dentry from cache at this
    point and found nothing.
    
    So use d_obtain_alias().  In the case that we already have the inode/dentry in
    cache we will get the correct dentry.  If not we will get a disconnected dentry
    tree so if we walk into it later on everything will be connected up properly.
    Thanks,
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    ba5b8958
super.c 32 KB