btrfs: remove root argument from btrfs_unlink_inode()
authorFilipe Manana <fdmanana@suse.com>
Mon, 25 Oct 2021 16:31:50 +0000 (17:31 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 5 Sep 2022 08:30:09 +0000 (10:30 +0200)
[ Upstream commit 4467af8809299c12529b5c21481c1d44a3b209f9 ]

The root argument passed to btrfs_unlink_inode() and its callee,
__btrfs_unlink_inode(), always matches the root of the given directory and
the given inode. So remove the argument and make __btrfs_unlink_inode()
use the root of the directory.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/btrfs/ctree.h
fs/btrfs/inode.c
fs/btrfs/tree-log.c

index 1831135..cd72570 100644 (file)
@@ -3166,7 +3166,6 @@ void __btrfs_del_delalloc_inode(struct btrfs_root *root,
 struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry);
 int btrfs_set_inode_index(struct btrfs_inode *dir, u64 *index);
 int btrfs_unlink_inode(struct btrfs_trans_handle *trans,
-                      struct btrfs_root *root,
                       struct btrfs_inode *dir, struct btrfs_inode *inode,
                       const char *name, int name_len);
 int btrfs_add_link(struct btrfs_trans_handle *trans,
index 428a56f..f8a0196 100644 (file)
@@ -4097,11 +4097,11 @@ int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans,
  * also drops the back refs in the inode to the directory
  */
 static int __btrfs_unlink_inode(struct btrfs_trans_handle *trans,
-                               struct btrfs_root *root,
                                struct btrfs_inode *dir,
                                struct btrfs_inode *inode,
                                const char *name, int name_len)
 {
+       struct btrfs_root *root = dir->root;
        struct btrfs_fs_info *fs_info = root->fs_info;
        struct btrfs_path *path;
        int ret = 0;
@@ -4201,15 +4201,14 @@ out:
 }
 
 int btrfs_unlink_inode(struct btrfs_trans_handle *trans,
-                      struct btrfs_root *root,
                       struct btrfs_inode *dir, struct btrfs_inode *inode,
                       const char *name, int name_len)
 {
        int ret;
-       ret = __btrfs_unlink_inode(trans, root, dir, inode, name, name_len);
+       ret = __btrfs_unlink_inode(trans, dir, inode, name, name_len);
        if (!ret) {
                drop_nlink(&inode->vfs_inode);
-               ret = btrfs_update_inode(trans, root, inode);
+               ret = btrfs_update_inode(trans, inode->root, inode);
        }
        return ret;
 }
@@ -4238,7 +4237,6 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir)
 
 static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
 {
-       struct btrfs_root *root = BTRFS_I(dir)->root;
        struct btrfs_trans_handle *trans;
        struct inode *inode = d_inode(dentry);
        int ret;
@@ -4250,7 +4248,7 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
        btrfs_record_unlink_dir(trans, BTRFS_I(dir), BTRFS_I(d_inode(dentry)),
                        0);
 
-       ret = btrfs_unlink_inode(trans, root, BTRFS_I(dir),
+       ret = btrfs_unlink_inode(trans, BTRFS_I(dir),
                        BTRFS_I(d_inode(dentry)), dentry->d_name.name,
                        dentry->d_name.len);
        if (ret)
@@ -4264,7 +4262,7 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
 
 out:
        btrfs_end_transaction(trans);
-       btrfs_btree_balance_dirty(root->fs_info);
+       btrfs_btree_balance_dirty(BTRFS_I(dir)->root->fs_info);
        return ret;
 }
 
@@ -4622,7 +4620,6 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
 {
        struct inode *inode = d_inode(dentry);
        int err = 0;
-       struct btrfs_root *root = BTRFS_I(dir)->root;
        struct btrfs_trans_handle *trans;
        u64 last_unlink_trans;
 
@@ -4647,7 +4644,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
        last_unlink_trans = BTRFS_I(inode)->last_unlink_trans;
 
        /* now the directory is empty */
-       err = btrfs_unlink_inode(trans, root, BTRFS_I(dir),
+       err = btrfs_unlink_inode(trans, BTRFS_I(dir),
                        BTRFS_I(d_inode(dentry)), dentry->d_name.name,
                        dentry->d_name.len);
        if (!err) {
@@ -4668,7 +4665,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
        }
 out:
        btrfs_end_transaction(trans);
-       btrfs_btree_balance_dirty(root->fs_info);
+       btrfs_btree_balance_dirty(BTRFS_I(dir)->root->fs_info);
 
        return err;
 }
@@ -9571,7 +9568,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
        if (old_ino == BTRFS_FIRST_FREE_OBJECTID) {
                ret = btrfs_unlink_subvol(trans, old_dir, old_dentry);
        } else { /* src is an inode */
-               ret = __btrfs_unlink_inode(trans, root, BTRFS_I(old_dir),
+               ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir),
                                           BTRFS_I(old_dentry->d_inode),
                                           old_dentry->d_name.name,
                                           old_dentry->d_name.len);
@@ -9587,7 +9584,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
        if (new_ino == BTRFS_FIRST_FREE_OBJECTID) {
                ret = btrfs_unlink_subvol(trans, new_dir, new_dentry);
        } else { /* dest is an inode */
-               ret = __btrfs_unlink_inode(trans, dest, BTRFS_I(new_dir),
+               ret = __btrfs_unlink_inode(trans, BTRFS_I(new_dir),
                                           BTRFS_I(new_dentry->d_inode),
                                           new_dentry->d_name.name,
                                           new_dentry->d_name.len);
@@ -9862,7 +9859,7 @@ static int btrfs_rename(struct user_namespace *mnt_userns,
                 */
                btrfs_pin_log_trans(root);
                log_pinned = true;
-               ret = __btrfs_unlink_inode(trans, root, BTRFS_I(old_dir),
+               ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir),
                                        BTRFS_I(d_inode(old_dentry)),
                                        old_dentry->d_name.name,
                                        old_dentry->d_name.len);
@@ -9882,7 +9879,7 @@ static int btrfs_rename(struct user_namespace *mnt_userns,
                        ret = btrfs_unlink_subvol(trans, new_dir, new_dentry);
                        BUG_ON(new_inode->i_nlink == 0);
                } else {
-                       ret = btrfs_unlink_inode(trans, dest, BTRFS_I(new_dir),
+                       ret = btrfs_unlink_inode(trans, BTRFS_I(new_dir),
                                                 BTRFS_I(d_inode(new_dentry)),
                                                 new_dentry->d_name.name,
                                                 new_dentry->d_name.len);
index 1d7e981..6f51c4d 100644 (file)
@@ -926,7 +926,7 @@ static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans,
        if (ret)
                goto out;
 
-       ret = btrfs_unlink_inode(trans, root, dir, BTRFS_I(inode), name,
+       ret = btrfs_unlink_inode(trans, dir, BTRFS_I(inode), name,
                        name_len);
        if (ret)
                goto out;
@@ -1091,7 +1091,7 @@ again:
                                inc_nlink(&inode->vfs_inode);
                                btrfs_release_path(path);
 
-                               ret = btrfs_unlink_inode(trans, root, dir, inode,
+                               ret = btrfs_unlink_inode(trans, dir, inode,
                                                victim_name, victim_name_len);
                                kfree(victim_name);
                                if (ret)
@@ -1165,7 +1165,7 @@ again:
                                        inc_nlink(&inode->vfs_inode);
                                        btrfs_release_path(path);
 
-                                       ret = btrfs_unlink_inode(trans, root,
+                                       ret = btrfs_unlink_inode(trans,
                                                        BTRFS_I(victim_parent),
                                                        inode,
                                                        victim_name,
@@ -1327,7 +1327,7 @@ again:
                                kfree(name);
                                goto out;
                        }
-                       ret = btrfs_unlink_inode(trans, root, BTRFS_I(dir),
+                       ret = btrfs_unlink_inode(trans, BTRFS_I(dir),
                                                 inode, name, namelen);
                        kfree(name);
                        iput(dir);
@@ -1434,7 +1434,7 @@ static int add_link(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                ret = -ENOENT;
                goto out;
        }
-       ret = btrfs_unlink_inode(trans, root, BTRFS_I(dir), BTRFS_I(other_inode),
+       ret = btrfs_unlink_inode(trans, BTRFS_I(dir), BTRFS_I(other_inode),
                                 name, namelen);
        if (ret)
                goto out;
@@ -1580,7 +1580,7 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
                        ret = btrfs_inode_ref_exists(inode, dir, key->type,
                                                     name, namelen);
                        if (ret > 0) {
-                               ret = btrfs_unlink_inode(trans, root,
+                               ret = btrfs_unlink_inode(trans,
                                                         BTRFS_I(dir),
                                                         BTRFS_I(inode),
                                                         name, namelen);
@@ -2339,7 +2339,7 @@ again:
                        }
 
                        inc_nlink(inode);
-                       ret = btrfs_unlink_inode(trans, root, BTRFS_I(dir),
+                       ret = btrfs_unlink_inode(trans, BTRFS_I(dir),
                                        BTRFS_I(inode), name, name_len);
                        if (!ret)
                                ret = btrfs_run_delayed_items(trans);