Merge tag 'for-6.3-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
[linux-2.6-block.git] / fs / btrfs / inode.c
index e99432e4912e7c1563e14980b88200f339b204bc..957e4d76a7b6578d59fd8f0b7d887e30d02c4e2b 100644 (file)
@@ -5128,7 +5128,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)
        return ret;
 }
 
-static int btrfs_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
+static int btrfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
                         struct iattr *attr)
 {
        struct inode *inode = d_inode(dentry);
@@ -5138,7 +5138,7 @@ static int btrfs_setattr(struct user_namespace *mnt_userns, struct dentry *dentr
        if (btrfs_root_readonly(root))
                return -EROFS;
 
-       err = setattr_prepare(mnt_userns, dentry, attr);
+       err = setattr_prepare(idmap, dentry, attr);
        if (err)
                return err;
 
@@ -5149,12 +5149,12 @@ static int btrfs_setattr(struct user_namespace *mnt_userns, struct dentry *dentr
        }
 
        if (attr->ia_valid) {
-               setattr_copy(mnt_userns, inode, attr);
+               setattr_copy(idmap, inode, attr);
                inode_inc_iversion(inode);
                err = btrfs_dirty_inode(BTRFS_I(inode));
 
                if (!err && attr->ia_valid & ATTR_MODE)
-                       err = posix_acl_chmod(mnt_userns, dentry, inode->i_mode);
+                       err = posix_acl_chmod(idmap, dentry, inode->i_mode);
        }
 
        return err;
@@ -6574,7 +6574,7 @@ out_inode:
        return err;
 }
 
-static int btrfs_mknod(struct user_namespace *mnt_userns, struct inode *dir,
+static int btrfs_mknod(struct mnt_idmap *idmap, struct inode *dir,
                       struct dentry *dentry, umode_t mode, dev_t rdev)
 {
        struct inode *inode;
@@ -6582,13 +6582,13 @@ static int btrfs_mknod(struct user_namespace *mnt_userns, struct inode *dir,
        inode = new_inode(dir->i_sb);
        if (!inode)
                return -ENOMEM;
-       inode_init_owner(mnt_userns, inode, dir, mode);
+       inode_init_owner(idmap, inode, dir, mode);
        inode->i_op = &btrfs_special_inode_operations;
        init_special_inode(inode, inode->i_mode, rdev);
        return btrfs_create_common(dir, dentry, inode);
 }
 
-static int btrfs_create(struct user_namespace *mnt_userns, struct inode *dir,
+static int btrfs_create(struct mnt_idmap *idmap, struct inode *dir,
                        struct dentry *dentry, umode_t mode, bool excl)
 {
        struct inode *inode;
@@ -6596,7 +6596,7 @@ static int btrfs_create(struct user_namespace *mnt_userns, struct inode *dir,
        inode = new_inode(dir->i_sb);
        if (!inode)
                return -ENOMEM;
-       inode_init_owner(mnt_userns, inode, dir, mode);
+       inode_init_owner(idmap, inode, dir, mode);
        inode->i_fop = &btrfs_file_operations;
        inode->i_op = &btrfs_file_inode_operations;
        inode->i_mapping->a_ops = &btrfs_aops;
@@ -6687,7 +6687,7 @@ fail:
        return err;
 }
 
-static int btrfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
+static int btrfs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
                       struct dentry *dentry, umode_t mode)
 {
        struct inode *inode;
@@ -6695,7 +6695,7 @@ static int btrfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
        inode = new_inode(dir->i_sb);
        if (!inode)
                return -ENOMEM;
-       inode_init_owner(mnt_userns, inode, dir, S_IFDIR | mode);
+       inode_init_owner(idmap, inode, dir, S_IFDIR | mode);
        inode->i_op = &btrfs_dir_inode_operations;
        inode->i_fop = &btrfs_dir_file_operations;
        return btrfs_create_common(dir, dentry, inode);
@@ -8428,7 +8428,7 @@ out:
        return ret;
 }
 
-struct inode *btrfs_new_subvol_inode(struct user_namespace *mnt_userns,
+struct inode *btrfs_new_subvol_inode(struct mnt_idmap *idmap,
                                     struct inode *dir)
 {
        struct inode *inode;
@@ -8439,7 +8439,7 @@ struct inode *btrfs_new_subvol_inode(struct user_namespace *mnt_userns,
                 * Subvolumes don't inherit the sgid bit or the parent's gid if
                 * the parent's sgid bit is set. This is probably a bug.
                 */
-               inode_init_owner(mnt_userns, inode, NULL,
+               inode_init_owner(idmap, inode, NULL,
                                 S_IFDIR | (~current_umask() & S_IRWXUGO));
                inode->i_op = &btrfs_dir_inode_operations;
                inode->i_fop = &btrfs_dir_file_operations;
@@ -8628,7 +8628,7 @@ fail:
        return -ENOMEM;
 }
 
-static int btrfs_getattr(struct user_namespace *mnt_userns,
+static int btrfs_getattr(struct mnt_idmap *idmap,
                         const struct path *path, struct kstat *stat,
                         u32 request_mask, unsigned int flags)
 {
@@ -8658,7 +8658,7 @@ static int btrfs_getattr(struct user_namespace *mnt_userns,
                                  STATX_ATTR_IMMUTABLE |
                                  STATX_ATTR_NODUMP);
 
-       generic_fillattr(mnt_userns, inode, stat);
+       generic_fillattr(idmap, inode, stat);
        stat->dev = BTRFS_I(inode)->root->anon_dev;
 
        spin_lock(&BTRFS_I(inode)->lock);
@@ -8913,14 +8913,14 @@ out_notrans:
        return ret;
 }
 
-static struct inode *new_whiteout_inode(struct user_namespace *mnt_userns,
+static struct inode *new_whiteout_inode(struct mnt_idmap *idmap,
                                        struct inode *dir)
 {
        struct inode *inode;
 
        inode = new_inode(dir->i_sb);
        if (inode) {
-               inode_init_owner(mnt_userns, inode, dir,
+               inode_init_owner(idmap, inode, dir,
                                 S_IFCHR | WHITEOUT_MODE);
                inode->i_op = &btrfs_special_inode_operations;
                init_special_inode(inode, inode->i_mode, WHITEOUT_DEV);
@@ -8928,7 +8928,7 @@ static struct inode *new_whiteout_inode(struct user_namespace *mnt_userns,
        return inode;
 }
 
-static int btrfs_rename(struct user_namespace *mnt_userns,
+static int btrfs_rename(struct mnt_idmap *idmap,
                        struct inode *old_dir, struct dentry *old_dentry,
                        struct inode *new_dir, struct dentry *new_dentry,
                        unsigned int flags)
@@ -9000,7 +9000,7 @@ static int btrfs_rename(struct user_namespace *mnt_userns,
                filemap_flush(old_inode->i_mapping);
 
        if (flags & RENAME_WHITEOUT) {
-               whiteout_args.inode = new_whiteout_inode(mnt_userns, old_dir);
+               whiteout_args.inode = new_whiteout_inode(idmap, old_dir);
                if (!whiteout_args.inode) {
                        ret = -ENOMEM;
                        goto out_fscrypt_names;
@@ -9169,7 +9169,7 @@ out_fscrypt_names:
        return ret;
 }
 
-static int btrfs_rename2(struct user_namespace *mnt_userns, struct inode *old_dir,
+static int btrfs_rename2(struct mnt_idmap *idmap, struct inode *old_dir,
                         struct dentry *old_dentry, struct inode *new_dir,
                         struct dentry *new_dentry, unsigned int flags)
 {
@@ -9182,7 +9182,7 @@ static int btrfs_rename2(struct user_namespace *mnt_userns, struct inode *old_di
                ret = btrfs_rename_exchange(old_dir, old_dentry, new_dir,
                                            new_dentry);
        else
-               ret = btrfs_rename(mnt_userns, old_dir, old_dentry, new_dir,
+               ret = btrfs_rename(idmap, old_dir, old_dentry, new_dir,
                                   new_dentry, flags);
 
        btrfs_btree_balance_dirty(BTRFS_I(new_dir)->root->fs_info);
@@ -9382,7 +9382,7 @@ out:
        return ret;
 }
 
-static int btrfs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
+static int btrfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
                         struct dentry *dentry, const char *symname)
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(dir->i_sb);
@@ -9410,7 +9410,7 @@ static int btrfs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
        inode = new_inode(dir->i_sb);
        if (!inode)
                return -ENOMEM;
-       inode_init_owner(mnt_userns, inode, dir, S_IFLNK | S_IRWXUGO);
+       inode_init_owner(idmap, inode, dir, S_IFLNK | S_IRWXUGO);
        inode->i_op = &btrfs_symlink_inode_operations;
        inode_nohighmem(inode);
        inode->i_mapping->a_ops = &btrfs_aops;
@@ -9699,7 +9699,7 @@ int btrfs_prealloc_file_range_trans(struct inode *inode,
                                           min_size, actual_len, alloc_hint, trans);
 }
 
-static int btrfs_permission(struct user_namespace *mnt_userns,
+static int btrfs_permission(struct mnt_idmap *idmap,
                            struct inode *inode, int mask)
 {
        struct btrfs_root *root = BTRFS_I(inode)->root;
@@ -9712,10 +9712,10 @@ static int btrfs_permission(struct user_namespace *mnt_userns,
                if (BTRFS_I(inode)->flags & BTRFS_INODE_READONLY)
                        return -EACCES;
        }
-       return generic_permission(mnt_userns, inode, mask);
+       return generic_permission(idmap, inode, mask);
 }
 
-static int btrfs_tmpfile(struct user_namespace *mnt_userns, struct inode *dir,
+static int btrfs_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
                         struct file *file, umode_t mode)
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(dir->i_sb);
@@ -9733,7 +9733,7 @@ static int btrfs_tmpfile(struct user_namespace *mnt_userns, struct inode *dir,
        inode = new_inode(dir->i_sb);
        if (!inode)
                return -ENOMEM;
-       inode_init_owner(mnt_userns, inode, dir, mode);
+       inode_init_owner(idmap, inode, dir, mode);
        inode->i_fop = &btrfs_file_operations;
        inode->i_op = &btrfs_file_inode_operations;
        inode->i_mapping->a_ops = &btrfs_aops;