]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: switch _getattr() implementation to UserPerm
authorGreg Farnum <gfarnum@redhat.com>
Fri, 29 Jul 2016 22:42:50 +0000 (15:42 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Wed, 21 Sep 2016 23:33:49 +0000 (16:33 -0700)
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
src/client/Client.cc
src/client/Client.h

index f11607af0ab8e06858ebdea4d4adf80e51da8930..c8528542dc74ee48b2c673b1b64834575a35bf09 100644 (file)
@@ -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;
 }
index 09170d22d761df08485e374b695def52f07c2bc8..75d2333aa510f64dc2aa80c43982ea14b2e9dfb1 100644 (file)
@@ -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);