]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ceph: pass idmap to __ceph_setattr
authorAlexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
Mon, 7 Aug 2023 13:26:22 +0000 (15:26 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Fri, 3 Nov 2023 22:28:34 +0000 (23:28 +0100)
Just pass down the mount's idmapping to __ceph_setattr,
because we will need it later.

Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
Acked-by: Christian Brauner <brauner@kernel.org>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/acl.c
fs/ceph/crypto.c
fs/ceph/inode.c
fs/ceph/super.h

index e9584196139721dacecb30d850b35eceda335f05..295db55e4eeecce141831e4523e7d9b5347565a4 100644 (file)
@@ -142,7 +142,7 @@ int ceph_set_acl(struct mnt_idmap *idmap, struct dentry *dentry,
                newattrs.ia_ctime = current_time(inode);
                newattrs.ia_mode = new_mode;
                newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
-               ret = __ceph_setattr(inode, &newattrs, NULL);
+               ret = __ceph_setattr(idmap, inode, &newattrs, NULL);
                if (ret)
                        goto out_free;
        }
@@ -153,7 +153,7 @@ int ceph_set_acl(struct mnt_idmap *idmap, struct dentry *dentry,
                        newattrs.ia_ctime = old_ctime;
                        newattrs.ia_mode = old_mode;
                        newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
-                       __ceph_setattr(inode, &newattrs, NULL);
+                       __ceph_setattr(idmap, inode, &newattrs, NULL);
                }
                goto out_free;
        }
index d692ebfddedbc138dc7991cc664ab649884da8ec..52b1219699aafe765e9ac89ffd119dee973db991 100644 (file)
@@ -113,7 +113,7 @@ static int ceph_crypt_set_context(struct inode *inode, const void *ctx,
 
        cia.fscrypt_auth = cfa;
 
-       ret = __ceph_setattr(inode, &attr, &cia);
+       ret = __ceph_setattr(&nop_mnt_idmap, inode, &attr, &cia);
        if (ret == 0)
                inode_set_flags(inode, S_ENCRYPTED, S_ENCRYPTED);
        kfree(cia.fscrypt_auth);
index 1b0a1ac6ed74206a0d2db13e2d2a471b1e560897..927a336350fc9df9b95c28df2fdc67df5b0c9d46 100644 (file)
@@ -2457,8 +2457,8 @@ out:
        return ret;
 }
 
-int __ceph_setattr(struct inode *inode, struct iattr *attr,
-                  struct ceph_iattr *cia)
+int __ceph_setattr(struct mnt_idmap *idmap, struct inode *inode,
+                  struct iattr *attr, struct ceph_iattr *cia)
 {
        struct ceph_inode_info *ci = ceph_inode(inode);
        unsigned int ia_valid = attr->ia_valid;
@@ -2811,7 +2811,7 @@ int ceph_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
            ceph_quota_is_max_bytes_exceeded(inode, attr->ia_size))
                return -EDQUOT;
 
-       err = __ceph_setattr(inode, attr, NULL);
+       err = __ceph_setattr(idmap, inode, attr, NULL);
 
        if (err >= 0 && (attr->ia_valid & ATTR_MODE))
                err = posix_acl_chmod(&nop_mnt_idmap, dentry, attr->ia_mode);
index 983bf9ab3bd575f71a0ec9ef35e9394a581090ec..504c6f9a5beacfda3935cc42ed00c008982f67e8 100644 (file)
@@ -1100,8 +1100,8 @@ struct ceph_iattr {
        struct ceph_fscrypt_auth        *fscrypt_auth;
 };
 
-extern int __ceph_setattr(struct inode *inode, struct iattr *attr,
-                         struct ceph_iattr *cia);
+extern int __ceph_setattr(struct mnt_idmap *idmap, struct inode *inode,
+                         struct iattr *attr, struct ceph_iattr *cia);
 extern int ceph_setattr(struct mnt_idmap *idmap,
                        struct dentry *dentry, struct iattr *attr);
 extern int ceph_getattr(struct mnt_idmap *idmap,