]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Mutation: add an MDRequestParams struct and use that when building MDRequests
authorGreg Farnum <greg@inktank.com>
Mon, 12 May 2014 21:41:20 +0000 (14:41 -0700)
committerGreg Farnum <greg@inktank.com>
Mon, 12 May 2014 21:41:20 +0000 (14:41 -0700)
We now have a single constructor and one path to build MDRequests with.

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

index f4c6e567aa2ce48e42b83156cfe0dcb392723a79..090cd44c9aa481a0b72e20fd4ad6ce0db132e6b0 100644 (file)
@@ -8866,9 +8866,13 @@ MDRequestRef MDCache::request_start(MClientRequest *req)
   }
 
   // register new client request
-  MDRequestRef mdr(new MDRequestImpl(req->get_reqid(),
-                                     req->get_num_fwd(), req));
-  active_requests[req->get_reqid()] = mdr;
+  MDRequestImpl::Params params;
+  params.reqid = req->get_reqid();
+  params.attempt = req->get_num_fwd();
+  params.client_req = req;
+
+  MDRequestRef mdr(new MDRequestImpl(params));
+  active_requests[params.reqid] = mdr;
   dout(7) << "request_start " << *mdr << dendl;
   return mdr;
 }
@@ -8876,7 +8880,12 @@ MDRequestRef MDCache::request_start(MClientRequest *req)
 MDRequestRef MDCache::request_start_slave(metareqid_t ri, __u32 attempt, Message *m)
 {
   int by = m->get_source().num();
-  MDRequestRef mdr(new MDRequestImpl(ri, attempt, by));
+  MDRequestImpl::Params params;
+  params.reqid = ri;
+  params.attempt = attempt;
+  params.triggering_slave_req = m;
+  params.slave_to = by;
+  MDRequestRef mdr(new MDRequestImpl(params));
   assert(active_requests.count(mdr->reqid) == 0);
   active_requests[mdr->reqid] = mdr;
   dout(7) << "request_start_slave " << *mdr << " by mds." << by << dendl;
@@ -8885,10 +8894,11 @@ MDRequestRef MDCache::request_start_slave(metareqid_t ri, __u32 attempt, Message
 
 MDRequestRef MDCache::request_start_internal(int op)
 {
-  MDRequestRef mdr(new MDRequestImpl);
-  mdr->reqid.name = entity_name_t::MDS(mds->get_nodeid());
-  mdr->reqid.tid = mds->issue_tid();
-  mdr->internal_op = op;
+  MDRequestImpl::Params params;
+  params.reqid.name = entity_name_t::MDS(mds->get_nodeid());
+  params.reqid.tid = mds->issue_tid();
+  MDRequestRef mdr =
+      mds->op_tracker.create_request<MDRequestImpl,MDRequestImpl::Params>(params);
 
   assert(active_requests.count(mdr->reqid) == 0);
   active_requests[mdr->reqid] = mdr;
index dbfbe7595b0aebe8d668ea34acffac702dd2fc69..f4210ed011347a8446dbbe2adbf46ecca8cee26a 100644 (file)
@@ -78,6 +78,7 @@ struct MutationImpl {
   list<CInode*> dirty_cow_inodes;
   list<pair<CDentry*,version_t> > dirty_cow_dentries;
 
+  // keep our default values synced with MDRequestParam's
   MutationImpl()
     : attempt(0),
       ls(0),
@@ -250,46 +251,25 @@ struct MDRequestImpl : public MutationImpl {
 
 
   // ---------------------------------------------------
-  MDRequestImpl() :
-    session(0), item_session_request(this),
-    client_request(0), straydn(NULL), snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
-    alloc_ino(0), used_prealloc_ino(0), snap_caps(0), did_early_reply(false),
-    o_trunc(false),
-    getattr_caps(0),
-    slave_request(0),
-    internal_op(-1),
-    retry(0),
-    waited_for_osdmap(false),
-    _more(0) {
-    in[0] = in[1] = 0; 
-  }
-  MDRequestImpl(metareqid_t ri, __u32 attempt, MClientRequest *req) :
-    MutationImpl(ri, attempt),
-    session(0), item_session_request(this),
-    client_request(req), straydn(NULL), snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
-    alloc_ino(0), used_prealloc_ino(0), snap_caps(0), did_early_reply(false),
-    o_trunc(false),
-    getattr_caps(0),
-    slave_request(0),
-    internal_op(-1),
-    retry(0),
-    waited_for_osdmap(false),
-    _more(0) {
-    in[0] = in[1] = 0; 
-  }
-  MDRequestImpl(metareqid_t ri, __u32 attempt, int by) :
-    MutationImpl(ri, attempt, by),
-    session(0), item_session_request(this),
-    client_request(0), straydn(NULL), snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
-    alloc_ino(0), used_prealloc_ino(0), snap_caps(0), did_early_reply(false),
-    o_trunc(false),
-    getattr_caps(0),
-    slave_request(0),
-    internal_op(-1),
-    retry(0),
-    waited_for_osdmap(false),
-    _more(0) {
-    in[0] = in[1] = 0; 
+  struct Params {
+    metareqid_t reqid;
+    __u32 attempt;
+    MClientRequest *client_req;
+    class Message *triggering_slave_req;
+    int slave_to;
+    // keep these default values synced to MutationImpl's
+    Params() : attempt(0), client_req(NULL),
+        triggering_slave_req(NULL), slave_to(-1), internal_op(-1) {}
+  };
+  MDRequestImpl(const Params& params) :
+    MutationImpl(params.reqid, params.attempt, params.slave_to),
+    session(NULL), item_session_request(this),
+    client_request(params.client_req), straydn(NULL), snapid(CEPH_NOSNAP),
+    tracei(NULL), tracedn(NULL), alloc_ino(0), used_prealloc_ino(0), snap_caps(0),
+    did_early_reply(false), o_trunc(false), getattr_caps(0),
+    slave_request(NULL), internal_op(params.internal_op), retry(0),
+    waited_for_osdmap(false), _more(NULL) {
+    in[0] = in[1] = NULL;
   }
   ~MDRequestImpl();