]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: pass dentry to btrfs_mksubvol() and btrfs_mksnapshot()
authorDavid Sterba <dsterba@suse.com>
Thu, 26 Jun 2025 14:30:10 +0000 (16:30 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 21 Jul 2025 22:05:00 +0000 (00:05 +0200)
There's no reason to pass 'struct path' to btrfs_mksubvol(), though it's
been like the since the first commit 76dda93c6ae2c1 ("Btrfs: add
snapshot/subvolume destroy ioctl").  We only use the dentry so we should
pass it directly.

Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ioctl.c

index 99c701ec58056b55df7601cb6daad707fd5b7615..c0fa1b3584df25b24001d44238fb1ddbaea1d4d5 100644 (file)
@@ -892,13 +892,13 @@ static inline int btrfs_may_create(struct mnt_idmap *idmap,
  * sys_mkdirat and vfs_mkdir, but we only do a single component lookup
  * inside this filesystem so it's quite a bit simpler.
  */
-static noinline int btrfs_mksubvol(const struct path *parent,
+static noinline int btrfs_mksubvol(struct dentry *parent,
                                   struct mnt_idmap *idmap,
                                   struct qstr *qname, struct btrfs_root *snap_src,
                                   bool readonly,
                                   struct btrfs_qgroup_inherit *inherit)
 {
-       struct inode *dir = d_inode(parent->dentry);
+       struct inode *dir = d_inode(parent);
        struct btrfs_fs_info *fs_info = inode_to_fs_info(dir);
        struct dentry *dentry;
        struct fscrypt_str name_str = FSTR_INIT((char *)qname->name, qname->len);
@@ -908,7 +908,7 @@ static noinline int btrfs_mksubvol(const struct path *parent,
        if (ret == -EINTR)
                return ret;
 
-       dentry = lookup_one(idmap, qname, parent->dentry);
+       dentry = lookup_one(idmap, qname, parent);
        ret = PTR_ERR(dentry);
        if (IS_ERR(dentry))
                goto out_unlock;
@@ -946,7 +946,7 @@ out_unlock:
        return ret;
 }
 
-static noinline int btrfs_mksnapshot(const struct path *parent,
+static noinline int btrfs_mksnapshot(struct dentry *parent,
                                   struct mnt_idmap *idmap,
                                   struct qstr *qname,
                                   struct btrfs_root *root,
@@ -1208,7 +1208,7 @@ static noinline int __btrfs_ioctl_snap_create(struct file *file,
        }
 
        if (subvol) {
-               ret = btrfs_mksubvol(&file->f_path, idmap, &qname, NULL,
+               ret = btrfs_mksubvol(file_dentry(file), idmap, &qname, NULL,
                                     readonly, inherit);
        } else {
                CLASS(fd, src)(fd);
@@ -1239,7 +1239,7 @@ static noinline int __btrfs_ioctl_snap_create(struct file *file,
                         */
                        ret = -EINVAL;
                } else {
-                       ret = btrfs_mksnapshot(&file->f_path, idmap, &qname,
+                       ret = btrfs_mksnapshot(file_dentry(file), idmap, &qname,
                                               BTRFS_I(src_inode)->root,
                                               readonly, inherit);
                }