]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
move _check_access to SessionMap
authorJashan Kamboj <jashank42@gmail.com>
Mon, 3 Aug 2015 18:48:38 +0000 (00:18 +0530)
committerSage Weil <sage@redhat.com>
Thu, 1 Oct 2015 13:39:34 +0000 (09:39 -0400)
Signed-off-by: Jashan Kamboj <jashank42@gmail.com>
src/mds/Server.cc
src/mds/SessionMap.cc
src/mds/SessionMap.h

index 333dab0c33f396b8c52fc4f15d55b5f606544951..bd95ffa1a06b20b02b357974dc57001dcd46feff 100644 (file)
@@ -2105,34 +2105,9 @@ void Server::handle_slave_auth_pin_ack(MDRequestRef& mdr, MMDSSlaveRequest *ack)
  * by mask on the given inode, based on the capability in the mdr's
  * session.
  */
-bool Server::_check_access(Session *session, CInode *in, unsigned mask, int caller_uid, int caller_gid, int setattr_uid, int setattr_gid)
-{
-  string path;
-
-  if (in->is_stray()){
-    path = in->get_projected_inode()->stray_prior_path;
-  } else {
-    in->make_path_string(path, false, in->get_projected_parent_dn());
-  }
-  if (path.length())
-    path = path.substr(1);    // drop leading /
-
-  if ((mask & (MAY_CHOWN|MAY_CHGRP)) &&
-    !(session->auth_caps.is_capable(path, in->inode.uid, in->inode.gid, in->inode.mode,
-                  caller_uid, caller_gid, mask))) {
-    return false;
-  }
-
-  if (session->auth_caps.is_capable(path, in->inode.uid, in->inode.gid, in->inode.mode,
-            caller_uid, caller_gid, mask)) {
-    return true;
-  }
-  return false;
-}
-
 bool Server::check_access(MDRequestRef& mdr, CInode *in, unsigned mask)
 {
- if (!_check_access(mdr->session, in, MAY_WRITE, mdr->client_request->get_caller_uid(), mdr->client_request->get_caller_gid(),
+ if (!mdr->session->check_access(in, MAY_WRITE, mdr->client_request->get_caller_uid(), mdr->client_request->get_caller_gid(),
         mdr->client_request->head.args.setattr.uid, mdr->client_request->head.args.setattr.gid)){
     respond_to_request(mdr, -EACCES);
   }
index dc0ba711694de90a08b7a82cb4a40819352ed57b..cde0ba0d38ddfa3023e29827ee1b7435cf9c84c8 100644 (file)
@@ -829,4 +829,28 @@ void SessionMap::save_if_dirty(const std::set<entity_name_t> &tgt_sessions,
   }
 }
 
+bool Session::check_access(CInode *in, unsigned mask, int caller_uid, int caller_gid, int setattr_uid, int setattr_gid)
+{
+  string path;
+
+  if (in->is_stray()){
+    path = in->get_projected_inode()->stray_prior_path;
+  } else {
+    in->make_path_string(path, false, in->get_projected_parent_dn());
+  }
+  if (path.length())
+    path = path.substr(1);    // drop leading /
+
+  if ((mask & (MAY_CHOWN|MAY_CHGRP)) &&
+    !(auth_caps.is_capable(path, in->inode.uid, in->inode.gid, in->inode.mode,
+                  caller_uid, caller_gid, mask))) {
+    return false;
+  }
+
+  if (auth_caps.is_capable(path, in->inode.uid, in->inode.gid, in->inode.mode,
+            caller_uid, caller_gid, mask)) {
+    return true;
+  }
+  return false;
+}
 
index a4fdb3d8c1fe16e6f2f98a1cf90dcc17e5ea4b96..6a2a840b635b0061ca83955fde870a9e6aa7c2c9 100644 (file)
@@ -301,6 +301,8 @@ public:
     completed_requests_dirty = false;
   }
 
+  bool check_access(CInode *in, unsigned mask, int caller_uid, int caller_gid, int setattr_uid, int setattr_gid);
+
 
   Session() : 
     state(STATE_CLOSED), state_seq(0), importing_count(0),