diff options
-rw-r--r-- | src/common/TrackedOp.h | 2 | ||||
-rw-r--r-- | src/osd/OpRequest.cc | 9 | ||||
-rw-r--r-- | src/osd/OpRequest.h | 13 |
3 files changed, 16 insertions, 8 deletions
diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index 835cf86e9d3..7a7b66396f6 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -42,6 +42,8 @@ public: warn_interval_multiplier(1), seq(0) {} + virtual void init_from_message() {}; + virtual ~TrackedOp() {} utime_t get_arrived() const { diff --git a/src/osd/OpRequest.cc b/src/osd/OpRequest.cc index 388faf36763..5a9abd63cf6 100644 --- a/src/osd/OpRequest.cc +++ b/src/osd/OpRequest.cc @@ -285,3 +285,12 @@ void OpRequest::mark_event(const string &event) } tracker->mark_event(this, event); } + +void OpRequest::init_from_message() +{ + if (request->get_type() == CEPH_MSG_OSD_OP) { + reqid = static_cast<MOSDOp*>(request)->get_reqid(); + } else if (request->get_type() == MSG_OSD_SUBOP) { + reqid = static_cast<MOSDSubOp*>(request)->reqid; + } +} diff --git a/src/osd/OpRequest.h b/src/osd/OpRequest.h index f501c649699..7dc8e78afa5 100644 --- a/src/osd/OpRequest.h +++ b/src/osd/OpRequest.h @@ -25,9 +25,6 @@ #include <tr1/memory> #include "common/TrackedOp.h" #include "osd/osd_types.h" -// FIXME: augh, get these outta here! -#include "messages/MOSDOp.h" -#include "messages/MOSDSubOp.h" class OpTracker; class OpHistory { @@ -101,15 +98,13 @@ public: TRef retval(new T(ref, this), RemoveOnDelete(this)); - if (ref->get_type() == CEPH_MSG_OSD_OP) { - retval->reqid = static_cast<MOSDOp*>(ref)->get_reqid(); - } else if (ref->get_type() == MSG_OSD_SUBOP) { - retval->reqid = static_cast<MOSDSubOp*>(ref)->reqid; - } _mark_event(retval.get(), "header_read", ref->get_recv_stamp()); _mark_event(retval.get(), "throttled", ref->get_throttle_stamp()); _mark_event(retval.get(), "all_read", ref->get_recv_complete_stamp()); _mark_event(retval.get(), "dispatched", ref->get_dispatch_stamp()); + + retval->init_from_message(); + return retval; } }; @@ -238,6 +233,8 @@ public: osd_reqid_t get_reqid() const { return reqid; } + + void init_from_message(); }; typedef std::tr1::shared_ptr<OpRequest> OpRequestRef; |