From: Greg Farnum Date: Wed, 3 Aug 2016 06:29:47 +0000 (-0700) Subject: client: switch _posix_acl_create() to UserPerm X-Git-Tag: v11.0.1~36^2~35 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c8cd75f499baa2bdf3dbb876e28edab7e16503d9;p=ceph.git client: switch _posix_acl_create() to UserPerm Signed-off-by: Greg Farnum --- diff --git a/src/client/Client.cc b/src/client/Client.cc index a4ee8164b624..345b6f9c352b 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -10506,7 +10506,7 @@ int Client::_mknod(Inode *dir, const char *name, mode_t mode, dev_t rdev, req->dentry_unless = CEPH_CAP_FILE_EXCL; bufferlist xattrs_bl; - int res = _posix_acl_create(dir, &mode, xattrs_bl, perms.uid(), perms.gid()); + int res = _posix_acl_create(dir, &mode, xattrs_bl, perms); if (res < 0) goto fail; req->head.args.mknod.mode = mode; @@ -10618,7 +10618,7 @@ int Client::_create(Inode *dir, const char *name, int flags, mode_t mode, mode |= S_IFREG; bufferlist xattrs_bl; - int res = _posix_acl_create(dir, &mode, xattrs_bl, perms.uid(), perms.gid()); + int res = _posix_acl_create(dir, &mode, xattrs_bl, perms); if (res < 0) goto fail; req->head.args.open.mode = mode; @@ -10687,7 +10687,7 @@ int Client::_mkdir(Inode *dir, const char *name, mode_t mode, const UserPerm& pe mode |= S_IFDIR; bufferlist xattrs_bl; - int res = _posix_acl_create(dir, &mode, xattrs_bl, perm.uid(), perm.gid()); + int res = _posix_acl_create(dir, &mode, xattrs_bl, perm); if (res < 0) goto fail; req->head.args.mkdir.mode = mode; @@ -12404,7 +12404,7 @@ out: } int Client::_posix_acl_create(Inode *dir, mode_t *mode, bufferlist& xattrs_bl, - int uid, int gid) + const UserPerm& perms) { if (acl_type == NO_ACL) return 0; @@ -12412,7 +12412,7 @@ int Client::_posix_acl_create(Inode *dir, mode_t *mode, bufferlist& xattrs_bl, if (S_ISLNK(*mode)) return 0; - int r = _getattr(dir, CEPH_STAT_CAP_XATTR, uid, gid, dir->xattr_version == 0); + int r = _getattr(dir, CEPH_STAT_CAP_XATTR, perms.uid(), perms.gid(), dir->xattr_version == 0); if (r < 0) goto out; diff --git a/src/client/Client.h b/src/client/Client.h index d193fd207394..b4d2d1d76378 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -1009,7 +1009,8 @@ private: void _release_filelocks(Fh *fh); void _update_lock_state(struct flock *fl, uint64_t owner, ceph_lock_state_t *lock_state); - int _posix_acl_create(Inode *dir, mode_t *mode, bufferlist& xattrs_bl, int uid, int gid); + int _posix_acl_create(Inode *dir, mode_t *mode, bufferlist& xattrs_bl, + const UserPerm& perms); int _posix_acl_chmod(Inode *in, mode_t mode, const UserPerm& perms); int _posix_acl_permission(Inode *in, uid_t uid, UserGroups& groups, unsigned want);