}
// 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;
}
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;
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;
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),
// ---------------------------------------------------
- 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();