}
}
-void OpHistory::dump_ops(utime_t now, Formatter *f)
+void OpHistory::dump_ops(utime_t now, Formatter *f, set<string> filters)
{
Mutex::Locker history_lock(ops_history_lock);
cleanup(now);
arrived.begin();
i != arrived.end();
++i) {
+ if (!i->second->filter_out(filters))
+ continue;
f->open_object_section("op");
i->second->dump(now, f);
f->close_section();
f->close_section();
}
-void OpHistory::dump_ops_by_duration(utime_t now, Formatter *f)
+void OpHistory::dump_ops_by_duration(utime_t now, Formatter *f, set<string> filters)
{
Mutex::Locker history_lock(ops_history_lock);
cleanup(now);
arrived.begin();
i != arrived.end();
++i) {
+ if (!i->second->filter_out(filters))
+ continue;
durationvec.push_back(pair<double, TrackedOpRef>(i->second->get_duration(), i->second));
}
}
}
-bool OpTracker::dump_historic_ops(Formatter *f, bool by_duration)
+bool OpTracker::dump_historic_ops(Formatter *f, bool by_duration, set<string> filters)
{
RWLock::RLocker l(lock);
if (!tracking_enabled)
utime_t now = ceph_clock_now();
if (by_duration) {
- history.dump_ops_by_duration(now, f);
+ history.dump_ops_by_duration(now, f, filters);
} else {
- history.dump_ops(now, f);
+ history.dump_ops(now, f, filters);
}
return true;
}
-void OpHistory::dump_slow_ops(utime_t now, Formatter *f)
+void OpHistory::dump_slow_ops(utime_t now, Formatter *f, set<string> filters)
{
Mutex::Locker history_lock(ops_history_lock);
cleanup(now);
slow_op.begin();
i != slow_op.end();
++i) {
+ if (!i->second->filter_out(filters))
+ continue;
f->open_object_section("Op");
i->second->dump(now, f);
f->close_section();
f->close_section();
}
-bool OpTracker::dump_historic_slow_ops(Formatter *f)
+bool OpTracker::dump_historic_slow_ops(Formatter *f, set<string> filters)
{
RWLock::RLocker l(lock);
if (!tracking_enabled)
return false;
utime_t now = ceph_clock_now();
- history.dump_slow_ops(now, f);
+ history.dump_slow_ops(now, f, filters);
return true;
}
-bool OpTracker::dump_ops_in_flight(Formatter *f, bool print_only_blocked)
+bool OpTracker::dump_ops_in_flight(Formatter *f, bool print_only_blocked, set<string> filters)
{
RWLock::RLocker l(lock);
if (!tracking_enabled)
Mutex::Locker locker(sdata->ops_in_flight_lock_sharded);
for (auto& op : sdata->ops_in_flight_sharded) {
if (print_only_blocked && (now - op.get_initiated() <= complaint_time))
- break;
+ break;
+ if (!op.filter_out(filters))
+ continue;
f->open_object_section("op");
op.dump(now, f);
f->close_section(); // this TrackedOp
events.push_back(Event(stamp, event));
current = events.back().c_str();
}
- dout(6) << "seq: " << seq
+ dout(6) << " seq: " << seq
<< ", time: " << stamp
<< ", event: " << event
<< ", op: " << get_desc()
events.push_back(Event(stamp, event));
current = event;
}
- dout(6) << "seq: " << seq
+ dout(6) << " seq: " << seq
<< ", time: " << stamp
<< ", event: " << event
<< ", op: " << get_desc()
f->dump_float("age", now - get_initiated());
f->dump_float("duration", get_duration());
{
- f->open_array_section("type_data");
+ f->open_object_section("type_data");
_dump(f);
f->close_section();
}