From: Greg Farnum Date: Tue, 22 Apr 2014 22:03:47 +0000 (-0700) Subject: TrackedOp: introduce a _dump_op_descriptor function X-Git-Tag: v0.82~82^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6a559a5dcf3696ba9050cad709abe108c409becd;p=ceph.git TrackedOp: introduce a _dump_op_descriptor function Use this instead of direct access to the Message underneath when dumping the TrackedOp. Signed-off-by: Greg Farnum --- diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index ddb2f91ac3f..65239ab2e05 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -264,9 +264,8 @@ void TrackedOp::mark_event(const string &event) void TrackedOp::dump(utime_t now, Formatter *f) const { - Message *m = request; stringstream name; - m->print(name); + _dump_op_descriptor(name); f->dump_string("description", name.str().c_str()); // this TrackedOp f->dump_stream("received_at") << get_arrived(); f->dump_float("age", now - get_arrived()); diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index a2c092707c4..102d0bd50d9 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -152,6 +152,8 @@ protected: virtual void _dump(utime_t now, Formatter *f) const {} /// if you want something else to happen when events are marked, implement virtual void _event_marked() {} + /// return a unique descriptor of the Op; eg the message it's attached to + virtual void _dump_op_descriptor(ostream& stream) const = 0; public: virtual ~TrackedOp() { assert(request); request->put(); } diff --git a/src/osd/OpRequest.cc b/src/osd/OpRequest.cc index a42a085ebd0..949071a0351 100644 --- a/src/osd/OpRequest.cc +++ b/src/osd/OpRequest.cc @@ -55,6 +55,11 @@ void OpRequest::_dump(utime_t now, Formatter *f) const } } +void OpRequest::_dump_op_descriptor(ostream& stream) const +{ + get_req()->print(stream); +} + bool OpRequest::check_rmw(int flag) { return rmw_flags & flag; } diff --git a/src/osd/OpRequest.h b/src/osd/OpRequest.h index 931f4aebbbe..ba6333fd497 100644 --- a/src/osd/OpRequest.h +++ b/src/osd/OpRequest.h @@ -88,6 +88,9 @@ private: OpRequest(Message *req, OpTracker *tracker); +protected: + void _dump_op_descriptor(ostream& stream) const; + public: bool been_queued_for_pg() { return hit_flag_points & flag_queued_for_pg; } bool been_reached_pg() { return hit_flag_points & flag_reached_pg; }