From: Greg Farnum Date: Fri, 29 Jul 2016 22:42:50 +0000 (-0700) Subject: client: switch _getattr() implementation to UserPerm X-Git-Tag: v11.0.1~36^2~63 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=71878e3ea21b2ef2195babfa8d0fb2d731dce4a0;p=ceph.git client: switch _getattr() implementation to UserPerm Signed-off-by: Greg Farnum --- diff --git a/src/client/Client.cc b/src/client/Client.cc index f11607af0ab..c8528542dc7 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -6343,7 +6343,7 @@ int Client::_readlink(Inode *in, char *buf, size_t size) // inode stuff -int Client::_getattr(Inode *in, int mask, int uid, int gid, bool force) +int Client::_getattr(Inode *in, int mask, const UserPerm& perms, bool force) { bool yes = in->caps_issued_mask(mask); @@ -6358,7 +6358,7 @@ int Client::_getattr(Inode *in, int mask, int uid, int gid, bool force) req->set_inode(in); req->head.args.getattr.mask = mask; - int res = make_request(req, uid, gid); + int res = make_request(req, perms); ldout(cct, 10) << "_getattr result=" << res << dendl; return res; } diff --git a/src/client/Client.h b/src/client/Client.h index 09170d22d76..75d2333aa51 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -803,16 +803,19 @@ private: InodeRef *inp = 0); int _setattr(InodeRef &in, struct stat *attr, int mask, const UserPerm& perms); - int _getattr(Inode *in, int mask, int uid=-1, int gid=-1, bool force=false); + int _getattr(Inode *in, int mask, const UserPerm& perms, bool force=false); + int _getattr(InodeRef &in, int mask, const UserPerm& perms, bool force=false) { + return _getattr(in.get(), mask, perms, force); + } int _getattr(InodeRef &in, int mask, int uid=-1, int gid=-1, bool force=false) { return _getattr(in.get(), mask, uid, gid, force); } - int _getattr(InodeRef &in, int mask, const UserPerm& perms, bool force=false) { + int _getattr(Inode *in, int mask, int uid=-1, int gid=-1, bool force=false) { + if (uid < 0) uid = get_uid(); + if (gid < 0) gid = get_gid(); + UserPerm perms(uid, gid); return _getattr(in, mask, perms, force); } - int _getattr(Inode *in, int mask, const UserPerm& perms, bool force=false) { - return _getattr(in, mask, perms.uid(), perms.gid(), force); - } int _readlink(Inode *in, char *buf, size_t size); int _getxattr(Inode *in, const char *name, void *value, size_t len, const UserPerm& perms);