From: Greg Farnum Date: Mon, 12 May 2014 21:41:20 +0000 (-0700) Subject: Mutation: add an MDRequestParams struct and use that when building MDRequests X-Git-Tag: v0.82~82^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b27780291c5311a29eabef65ea793ccfcd1a1416;p=ceph.git Mutation: add an MDRequestParams struct and use that when building MDRequests We now have a single constructor and one path to build MDRequests with. Signed-off-by: Greg Farnum --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index f4c6e567aa2..090cd44c9aa 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -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(params); assert(active_requests.count(mdr->reqid) == 0); active_requests[mdr->reqid] = mdr; diff --git a/src/mds/Mutation.h b/src/mds/Mutation.h index dbfbe7595b0..f4210ed0113 100644 --- a/src/mds/Mutation.h +++ b/src/mds/Mutation.h @@ -78,6 +78,7 @@ struct MutationImpl { list dirty_cow_inodes; list > 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();