]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Server: remove tracei and tracedn parameters from reply_request
authorGreg Farnum <greg@inktank.com>
Fri, 1 Aug 2014 14:01:04 +0000 (07:01 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Fri, 7 Nov 2014 20:42:14 +0000 (12:42 -0800)
We have members for these two parameters in the MDRequestImpl already, so
make use of them. This helps us move towards dropping the expectation of an
MClientRequest from functions like rdlock_path_pin_ref().

Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/Server.cc
src/mds/Server.h

index 9caea1102bd071f1eb8cbe70bb83b36ccdbbb916..d83a54eb157737c02b7de553cc0747bfe69d1790 100644 (file)
@@ -901,9 +901,9 @@ void Server::submit_mdlog_entry(LogEvent *le, MDSInternalContextBase *fin, MDReq
 /*
  * send generic response (just an error code), clean up mdr
  */
-void Server::reply_request(MDRequestRef& mdr, int r, CInode *tracei, CDentry *tracedn)
+void Server::reply_request(MDRequestRef& mdr, int r)
 {
-  reply_request(mdr, new MClientReply(mdr->client_request, r), tracei, tracedn);
+  reply_request(mdr, new MClientReply(mdr->client_request, r));
 }
 
 void Server::early_reply(MDRequestRef& mdr, CInode *tracei, CDentry *tracedn)
@@ -977,7 +977,7 @@ void Server::early_reply(MDRequestRef& mdr, CInode *tracei, CDentry *tracedn)
  * include a trace to tracei
  * Clean up mdr
  */
-void Server::reply_request(MDRequestRef& mdr, MClientReply *reply, CInode *tracei, CDentry *tracedn)
+void Server::reply_request(MDRequestRef& mdr, MClientReply *reply)
 {
   assert(mdr.get());
   MClientRequest *req = mdr->client_request;
@@ -997,10 +997,8 @@ void Server::reply_request(MDRequestRef& mdr, MClientReply *reply, CInode *trace
 
   // get tracei/tracedn from mdr?
   snapid_t snapid = mdr->snapid;
-  if (!tracei)
-    tracei = mdr->tracei;
-  if (!tracedn)
-    tracedn = mdr->tracedn;
+  CInode *tracei = mdr->tracei;
+  CDentry *tracedn = mdr->tracedn;
 
   bool is_replay = mdr->client_request->is_replay();
   bool did_early_reply = mdr->did_early_reply;
@@ -2181,7 +2179,9 @@ CInode* Server::rdlock_path_pin_ref(MDRequestRef& mdr, int n,
     return NULL; // delayed
   if (r < 0) {  // error
     if (r == -ENOENT && n == 0 && mdr->dn[n].size()) {
-      reply_request(mdr, r, NULL, no_lookup ? NULL : mdr->dn[n][mdr->dn[n].size()-1]);
+      if (!no_lookup)
+       mdr->tracedn = mdr->dn[n][mdr->dn[n].size()-1];
+      reply_request(mdr, r);
     } else if (r == -ESTALE) {
       dout(10) << "FAIL on ESTALE but attempting recovery" << dendl;
       MDSInternalContextBase *c = new C_MDS_TryFindInode(this, mdr);
@@ -2447,8 +2447,10 @@ void Server::handle_client_getattr(MDRequestRef& mdr, bool is_lookup)
 
   // reply
   dout(10) << "reply to stat on " << *req << dendl;
-  reply_request(mdr, 0, ref,
-               is_lookup ? mdr->dn[0].back() : 0);
+  mdr->tracei = ref;
+  if (is_lookup)
+    mdr->tracedn = mdr->dn[0].back();
+  reply_request(mdr, 0);
 }
 
 struct C_MDS_LookupIno2 : public ServerContext {
@@ -2499,7 +2501,8 @@ void Server::handle_client_lookup_ino(MDRequestRef& mdr,
       return;
     }
     dout(10) << "reply to lookup_parent " << *in << dendl;
-    reply_request(mdr, 0, diri);
+    mdr->tracei = diri;
+    reply_request(mdr, 0);
   } else {
     if (want_dentry) {
       inodeno_t dirino = req->get_filepath2().get_ino();
@@ -2511,7 +2514,10 @@ void Server::handle_client_lookup_ino(MDRequestRef& mdr,
     } else
       dout(10) << "reply to lookup_ino " << *in << dendl;
 
-    reply_request(mdr, 0, in, want_dentry ? dn : NULL);
+    mdr->tracei = in;
+    if (want_dentry)
+      mdr->tracedn = dn;
+    reply_request(mdr, 0);
   }
 }
 
@@ -2687,7 +2693,9 @@ void Server::handle_client_open(MDRequestRef& mdr)
     dn = mdr->dn[0].back();
   }
 
-  reply_request(mdr, 0, cur, dn);
+  mdr->tracei = cur;
+  mdr->tracedn = dn;
+  reply_request(mdr, 0);
 }
 
 class C_MDS_openc_finish : public MDSInternalContext {
@@ -2819,7 +2827,9 @@ void Server::handle_client_openc(MDRequestRef& mdr)
     // it existed.  
     assert(req->head.args.open.flags & O_EXCL);
     dout(10) << "O_EXCL, target exists, failing with -EEXIST" << dendl;
-    reply_request(mdr, -EEXIST, dnl->get_inode(), dn);
+    mdr->tracei = dnl->get_inode();
+    mdr->tracedn = dn;
+    reply_request(mdr, -EEXIST);
     return;
   }
 
@@ -3098,7 +3108,8 @@ void Server::handle_client_readdir(MDRequestRef& mdr)
   mds->balancer->hit_dir(ceph_clock_now(g_ceph_context), dir, META_POP_IRD, -1, numfiles);
   
   // reply
-  reply_request(mdr, reply, diri);
+  mdr->tracei = diri;
+  reply_request(mdr, reply);
 }
 
 
@@ -7353,7 +7364,8 @@ void Server::handle_client_lssnap(MDRequestRef& mdr)
   
   MClientReply *reply = new MClientReply(req);
   reply->set_extra_bl(dirbl);
-  reply_request(mdr, reply, diri);
+  mdr->tracei = diri;
+  reply_request(mdr, reply);
 }
 
 
@@ -7504,7 +7516,8 @@ void Server::_mksnap_finish(MDRequestRef& mdr, CInode *diri, SnapInfo &info)
   mdr->snapid = info.snapid;
   MClientReply *reply = new MClientReply(mdr->client_request, 0);
   reply->snapbl = diri->snaprealm->get_snap_trace();
-  reply_request(mdr, reply, diri);
+  mdr->tracei = diri;
+  reply_request(mdr, reply);
 }
 
 
index 11ac54e12a3a0e759e816506504c76b927808324..f5c23ebfd3d8a8c4c0bd82170965f44101ae698e 100644 (file)
@@ -112,8 +112,8 @@ public:
                           MDRequestRef& mdr, const char *evt);
   void dispatch_client_request(MDRequestRef& mdr);
   void early_reply(MDRequestRef& mdr, CInode *tracei, CDentry *tracedn);
-  void reply_request(MDRequestRef& mdr, int r = 0, CInode *tracei = 0, CDentry *tracedn = 0);
-  void reply_request(MDRequestRef& mdr, MClientReply *reply, CInode *tracei = 0, CDentry *tracedn = 0);
+  void reply_request(MDRequestRef& mdr, int r = 0);
+  void reply_request(MDRequestRef& mdr, MClientReply *reply);
   void set_trace_dist(Session *session, MClientReply *reply, CInode *in, CDentry *dn,
                      snapid_t snapid,
                      int num_dentries_wanted,