Loading fs/btrfs/inode.c +6 −0 Original line number Diff line number Diff line Loading @@ -5158,6 +5158,10 @@ static int fixup_tree_root_location(struct btrfs_fs_info *fs_info, err = PTR_ERR(new_root); goto out; } if (!btrfs_grab_fs_root(new_root)) { err = -ENOENT; goto out; } *sub_root = new_root; location->objectid = btrfs_root_dirid(&new_root->root_item); Loading Loading @@ -5400,6 +5404,8 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry) } else { inode = btrfs_iget(dir->i_sb, &location, sub_root); } if (root != sub_root) btrfs_put_fs_root(sub_root); srcu_read_unlock(&fs_info->subvol_srcu, index); if (!IS_ERR(inode) && root != sub_root) { Loading Loading
fs/btrfs/inode.c +6 −0 Original line number Diff line number Diff line Loading @@ -5158,6 +5158,10 @@ static int fixup_tree_root_location(struct btrfs_fs_info *fs_info, err = PTR_ERR(new_root); goto out; } if (!btrfs_grab_fs_root(new_root)) { err = -ENOENT; goto out; } *sub_root = new_root; location->objectid = btrfs_root_dirid(&new_root->root_item); Loading Loading @@ -5400,6 +5404,8 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry) } else { inode = btrfs_iget(dir->i_sb, &location, sub_root); } if (root != sub_root) btrfs_put_fs_root(sub_root); srcu_read_unlock(&fs_info->subvol_srcu, index); if (!IS_ERR(inode) && root != sub_root) { Loading