btrfs: pass btrfs_inode to btrfs_delete_subvolume
authorDavid Sterba <dsterba@suse.com>
Thu, 27 Oct 2022 00:41:32 +0000 (02:41 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 5 Dec 2022 17:00:53 +0000 (18:00 +0100)
The function is for internal interfaces so we should use the
btrfs_inode.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/btrfs_inode.h
fs/btrfs/inode.c
fs/btrfs/ioctl.c

index ba0dbdc..481c75c 100644 (file)
@@ -439,7 +439,7 @@ int btrfs_unlink_inode(struct btrfs_trans_handle *trans,
 int btrfs_add_link(struct btrfs_trans_handle *trans,
                   struct btrfs_inode *parent_inode, struct btrfs_inode *inode,
                   const struct fscrypt_str *name, int add_backref, u64 index);
-int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry);
+int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry);
 int btrfs_truncate_block(struct btrfs_inode *inode, loff_t from, loff_t len,
                         int front);
 
index ffb4256..5e2fd24 100644 (file)
@@ -4698,10 +4698,10 @@ again:
        spin_unlock(&root->inode_lock);
 }
 
-int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
+int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(dentry->d_sb);
-       struct btrfs_root *root = BTRFS_I(dir)->root;
+       struct btrfs_root *root = dir->root;
        struct inode *inode = d_inode(dentry);
        struct btrfs_root *dest = BTRFS_I(inode)->root;
        struct btrfs_trans_handle *trans;
@@ -4758,9 +4758,9 @@ int btrfs_delete_subvolume(struct inode *dir, struct dentry *dentry)
        trans->block_rsv = &block_rsv;
        trans->bytes_reserved = block_rsv.size;
 
-       btrfs_record_snapshot_destroy(trans, BTRFS_I(dir));
+       btrfs_record_snapshot_destroy(trans, dir);
 
-       ret = btrfs_unlink_subvol(trans, dir, dentry);
+       ret = btrfs_unlink_subvol(trans, &dir->vfs_inode, dentry);
        if (ret) {
                btrfs_abort_transaction(trans, ret);
                goto out_end_trans;
@@ -4848,7 +4848,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
                        "extent tree v2 doesn't support snapshot deletion yet");
                        return -EOPNOTSUPP;
                }
-               return btrfs_delete_subvolume(dir, dentry);
+               return btrfs_delete_subvolume(BTRFS_I(dir), dentry);
        }
 
        err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &fname);
index 1832d30..7a9e697 100644 (file)
@@ -2529,7 +2529,7 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file,
        }
 
        btrfs_inode_lock(BTRFS_I(inode), 0);
-       err = btrfs_delete_subvolume(dir, dentry);
+       err = btrfs_delete_subvolume(BTRFS_I(dir), dentry);
        btrfs_inode_unlock(BTRFS_I(inode), 0);
        if (!err)
                d_delete_notify(dir, dentry);