ceph: rename struct ceph_acls_info to ceph_acl_sec_ctx
authorYan, Zheng <zyan@redhat.com>
Sun, 26 May 2019 07:35:39 +0000 (15:35 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 8 Jul 2019 12:01:42 +0000 (14:01 +0200)
Also rename ceph_release_acls_info() to ceph_release_acl_sec_ctx().
And move their definitions to different files. This is preparation
for security label support.

Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/acl.c
fs/ceph/dir.c
fs/ceph/file.c
fs/ceph/super.h
fs/ceph/xattr.c

index 8a19c24..aa55f41 100644 (file)
@@ -159,7 +159,7 @@ out:
 }
 
 int ceph_pre_init_acls(struct inode *dir, umode_t *mode,
-                      struct ceph_acls_info *info)
+                      struct ceph_acl_sec_ctx *as_ctx)
 {
        struct posix_acl *acl, *default_acl;
        size_t val_size1 = 0, val_size2 = 0;
@@ -234,9 +234,9 @@ int ceph_pre_init_acls(struct inode *dir, umode_t *mode,
 
        kfree(tmp_buf);
 
-       info->acl = acl;
-       info->default_acl = default_acl;
-       info->pagelist = pagelist;
+       as_ctx->acl = acl;
+       as_ctx->default_acl = default_acl;
+       as_ctx->pagelist = pagelist;
        return 0;
 
 out_err:
@@ -248,18 +248,10 @@ out_err:
        return err;
 }
 
-void ceph_init_inode_acls(struct inode* inode, struct ceph_acls_info *info)
+void ceph_init_inode_acls(struct inode *inode, struct ceph_acl_sec_ctx *as_ctx)
 {
        if (!inode)
                return;
-       ceph_set_cached_acl(inode, ACL_TYPE_ACCESS, info->acl);
-       ceph_set_cached_acl(inode, ACL_TYPE_DEFAULT, info->default_acl);
-}
-
-void ceph_release_acls_info(struct ceph_acls_info *info)
-{
-       posix_acl_release(info->acl);
-       posix_acl_release(info->default_acl);
-       if (info->pagelist)
-               ceph_pagelist_release(info->pagelist);
+       ceph_set_cached_acl(inode, ACL_TYPE_ACCESS, as_ctx->acl);
+       ceph_set_cached_acl(inode, ACL_TYPE_DEFAULT, as_ctx->default_acl);
 }
index 72efad2..14d795e 100644 (file)
@@ -825,7 +825,7 @@ static int ceph_mknod(struct inode *dir, struct dentry *dentry,
        struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
        struct ceph_mds_client *mdsc = fsc->mdsc;
        struct ceph_mds_request *req;
-       struct ceph_acls_info acls = {};
+       struct ceph_acl_sec_ctx as_ctx = {};
        int err;
 
        if (ceph_snap(dir) != CEPH_NOSNAP)
@@ -836,7 +836,7 @@ static int ceph_mknod(struct inode *dir, struct dentry *dentry,
                goto out;
        }
 
-       err = ceph_pre_init_acls(dir, &mode, &acls);
+       err = ceph_pre_init_acls(dir, &mode, &as_ctx);
        if (err < 0)
                goto out;
 
@@ -855,9 +855,9 @@ static int ceph_mknod(struct inode *dir, struct dentry *dentry,
        req->r_args.mknod.rdev = cpu_to_le32(rdev);
        req->r_dentry_drop = CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL;
        req->r_dentry_unless = CEPH_CAP_FILE_EXCL;
-       if (acls.pagelist) {
-               req->r_pagelist = acls.pagelist;
-               acls.pagelist = NULL;
+       if (as_ctx.pagelist) {
+               req->r_pagelist = as_ctx.pagelist;
+               as_ctx.pagelist = NULL;
        }
        err = ceph_mdsc_do_request(mdsc, dir, req);
        if (!err && !req->r_reply_info.head->is_dentry)
@@ -865,10 +865,10 @@ static int ceph_mknod(struct inode *dir, struct dentry *dentry,
        ceph_mdsc_put_request(req);
 out:
        if (!err)
-               ceph_init_inode_acls(d_inode(dentry), &acls);
+               ceph_init_inode_acls(d_inode(dentry), &as_ctx);
        else
                d_drop(dentry);
-       ceph_release_acls_info(&acls);
+       ceph_release_acl_sec_ctx(&as_ctx);
        return err;
 }
 
@@ -927,7 +927,7 @@ static int ceph_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
        struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
        struct ceph_mds_client *mdsc = fsc->mdsc;
        struct ceph_mds_request *req;
-       struct ceph_acls_info acls = {};
+       struct ceph_acl_sec_ctx as_ctx = {};
        int err = -EROFS;
        int op;
 
@@ -950,7 +950,7 @@ static int ceph_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
        }
 
        mode |= S_IFDIR;
-       err = ceph_pre_init_acls(dir, &mode, &acls);
+       err = ceph_pre_init_acls(dir, &mode, &as_ctx);
        if (err < 0)
                goto out;
 
@@ -967,9 +967,9 @@ static int ceph_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
        req->r_args.mkdir.mode = cpu_to_le32(mode);
        req->r_dentry_drop = CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL;
        req->r_dentry_unless = CEPH_CAP_FILE_EXCL;
-       if (acls.pagelist) {
-               req->r_pagelist = acls.pagelist;
-               acls.pagelist = NULL;
+       if (as_ctx.pagelist) {
+               req->r_pagelist = as_ctx.pagelist;
+               as_ctx.pagelist = NULL;
        }
        err = ceph_mdsc_do_request(mdsc, dir, req);
        if (!err &&
@@ -979,10 +979,10 @@ static int ceph_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
        ceph_mdsc_put_request(req);
 out:
        if (!err)
-               ceph_init_inode_acls(d_inode(dentry), &acls);
+               ceph_init_inode_acls(d_inode(dentry), &as_ctx);
        else
                d_drop(dentry);
-       ceph_release_acls_info(&acls);
+       ceph_release_acl_sec_ctx(&as_ctx);
        return err;
 }
 
index 183c37c..455b2a5 100644 (file)
@@ -437,7 +437,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
        struct ceph_mds_client *mdsc = fsc->mdsc;
        struct ceph_mds_request *req;
        struct dentry *dn;
-       struct ceph_acls_info acls = {};
+       struct ceph_acl_sec_ctx as_ctx = {};
        int mask;
        int err;
 
@@ -451,7 +451,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
        if (flags & O_CREAT) {
                if (ceph_quota_is_max_files_exceeded(dir))
                        return -EDQUOT;
-               err = ceph_pre_init_acls(dir, &mode, &acls);
+               err = ceph_pre_init_acls(dir, &mode, &as_ctx);
                if (err < 0)
                        return err;
        }
@@ -460,16 +460,16 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
        req = prepare_open_request(dir->i_sb, flags, mode);
        if (IS_ERR(req)) {
                err = PTR_ERR(req);
-               goto out_acl;
+               goto out_ctx;
        }
        req->r_dentry = dget(dentry);
        req->r_num_caps = 2;
        if (flags & O_CREAT) {
                req->r_dentry_drop = CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL;
                req->r_dentry_unless = CEPH_CAP_FILE_EXCL;
-               if (acls.pagelist) {
-                       req->r_pagelist = acls.pagelist;
-                       acls.pagelist = NULL;
+               if (as_ctx.pagelist) {
+                       req->r_pagelist = as_ctx.pagelist;
+                       as_ctx.pagelist = NULL;
                }
        }
 
@@ -507,7 +507,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
        } else {
                dout("atomic_open finish_open on dn %p\n", dn);
                if (req->r_op == CEPH_MDS_OP_CREATE && req->r_reply_info.has_create_ino) {
-                       ceph_init_inode_acls(d_inode(dentry), &acls);
+                       ceph_init_inode_acls(d_inode(dentry), &as_ctx);
                        file->f_mode |= FMODE_CREATED;
                }
                err = finish_open(file, dentry, ceph_open);
@@ -516,8 +516,8 @@ out_req:
        if (!req->r_err && req->r_target_inode)
                ceph_put_fmode(ceph_inode(req->r_target_inode), req->r_fmode);
        ceph_mdsc_put_request(req);
-out_acl:
-       ceph_release_acls_info(&acls);
+out_ctx:
+       ceph_release_acl_sec_ctx(&as_ctx);
        dout("atomic_open result=%d\n", err);
        return err;
 }
index 0176b3c..f82fd18 100644 (file)
@@ -929,6 +929,14 @@ extern void __ceph_build_xattrs_blob(struct ceph_inode_info *ci);
 extern void __ceph_destroy_xattrs(struct ceph_inode_info *ci);
 extern const struct xattr_handler *ceph_xattr_handlers[];
 
+struct ceph_acl_sec_ctx {
+#ifdef CONFIG_CEPH_FS_POSIX_ACL
+       void *default_acl;
+       void *acl;
+#endif
+       struct ceph_pagelist *pagelist;
+};
+
 #ifdef CONFIG_SECURITY
 extern bool ceph_security_xattr_deadlock(struct inode *in);
 extern bool ceph_security_xattr_wanted(struct inode *in);
@@ -943,21 +951,17 @@ static inline bool ceph_security_xattr_wanted(struct inode *in)
 }
 #endif
 
-/* acl.c */
-struct ceph_acls_info {
-       void *default_acl;
-       void *acl;
-       struct ceph_pagelist *pagelist;
-};
+void ceph_release_acl_sec_ctx(struct ceph_acl_sec_ctx *as_ctx);
 
+/* acl.c */
 #ifdef CONFIG_CEPH_FS_POSIX_ACL
 
 struct posix_acl *ceph_get_acl(struct inode *, int);
 int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type);
 int ceph_pre_init_acls(struct inode *dir, umode_t *mode,
-                      struct ceph_acls_info *info);
-void ceph_init_inode_acls(struct inode *inode, struct ceph_acls_info *info);
-void ceph_release_acls_info(struct ceph_acls_info *info);
+                      struct ceph_acl_sec_ctx *as_ctx);
+void ceph_init_inode_acls(struct inode *inode,
+                         struct ceph_acl_sec_ctx *as_ctx);
 
 static inline void ceph_forget_all_cached_acls(struct inode *inode)
 {
@@ -970,15 +974,12 @@ static inline void ceph_forget_all_cached_acls(struct inode *inode)
 #define ceph_set_acl NULL
 
 static inline int ceph_pre_init_acls(struct inode *dir, umode_t *mode,
-                                    struct ceph_acls_info *info)
+                                    struct ceph_acl_sec_ctx *as_ctx)
 {
        return 0;
 }
 static inline void ceph_init_inode_acls(struct inode *inode,
-                                       struct ceph_acls_info *info)
-{
-}
-static inline void ceph_release_acls_info(struct ceph_acls_info *info)
+                                       struct ceph_acl_sec_ctx *as_ctx)
 {
 }
 static inline int ceph_acl_chmod(struct dentry *dentry, struct inode *inode)
index 7eff619..518a5be 100644 (file)
@@ -1197,3 +1197,13 @@ bool ceph_security_xattr_deadlock(struct inode *in)
        return ret;
 }
 #endif
+
+void ceph_release_acl_sec_ctx(struct ceph_acl_sec_ctx *as_ctx)
+{
+#ifdef CONFIG_CEPH_FS_POSIX_ACL
+       posix_acl_release(as_ctx->acl);
+       posix_acl_release(as_ctx->default_acl);
+#endif
+       if (as_ctx->pagelist)
+               ceph_pagelist_release(as_ctx->pagelist);
+}