f->close_section();
}
-void OpTracker::dump_historic_ops(Formatter *f)
+bool OpTracker::dump_historic_ops(Formatter *f)
{
+ if (!tracking_enabled)
+ return false;
+
utime_t now = ceph_clock_now(cct);
history.dump_ops(now, f);
+ return true;
}
-void OpTracker::dump_ops_in_flight(Formatter *f, bool print_only_blocked)
+bool OpTracker::dump_ops_in_flight(Formatter *f, bool print_only_blocked)
{
+ if (!tracking_enabled)
+ return false;
+
f->open_object_section("ops_in_flight"); // overall dump
uint64_t total_ops_in_flight = 0;
f->open_array_section("ops"); // list of TrackedOps
} else
f->dump_int("num_ops", total_ops_in_flight);
f->close_section(); // overall dump
+ return true;
}
void OpTracker::register_inflight_op(xlist<TrackedOp*>::item *i)
void set_history_size_and_duration(uint32_t new_size, uint32_t new_duration) {
history.set_size_and_duration(new_size, new_duration);
}
- void dump_ops_in_flight(Formatter *f, bool print_only_blocked=false);
- void dump_historic_ops(Formatter *f);
+ bool dump_ops_in_flight(Formatter *f, bool print_only_blocked=false);
+ bool dump_historic_ops(Formatter *f);
void register_inflight_op(xlist<TrackedOp*>::item *i);
void unregister_inflight_op(TrackedOp *i);
f->dump_string("error", "mds_not_active");
} else if (command == "dump_ops_in_flight" ||
command == "ops") {
- if (!op_tracker.tracking_enabled) {
+ if (!op_tracker.dump_ops_in_flight(f)) {
ss << "op_tracker tracking is not enabled";
- } else {
- op_tracker.dump_ops_in_flight(f);
}
} else if (command == "dump_historic_ops") {
- if (!op_tracker.tracking_enabled) {
+ if (!op_tracker.dump_historic_ops(f)) {
ss << "op_tracker tracking is not enabled";
- } else {
- op_tracker.dump_historic_ops(f);
}
} else if (command == "osdmap barrier") {
int64_t target_epoch = 0;
store->sync_and_flush();
} else if (command == "dump_ops_in_flight" ||
command == "ops") {
- if (!op_tracker.tracking_enabled) {
+ if (!op_tracker.dump_ops_in_flight(f)) {
ss << "op_tracker tracking is not enabled now, so no ops are tracked currently, even those get stuck. \
Please enable \"osd_enable_op_tracker\", and the tracker will start to track new ops received afterwards.";
- } else {
- op_tracker.dump_ops_in_flight(f);
}
} else if (command == "dump_blocked_ops") {
- RWLock::RLocker l(op_tracker.lock);
- if (!op_tracker.tracking_enabled) {
+ if (!op_tracker.dump_ops_in_flight(f, true)) {
ss << "op_tracker tracking is not enabled now, so no ops are tracked currently, even those get stuck. \
Please enable \"osd_enable_op_tracker\", and the tracker will start to track new ops received afterwards.";
- } else {
- op_tracker.dump_ops_in_flight(f, true);
}
-
} else if (command == "dump_historic_ops") {
- if (!op_tracker.tracking_enabled) {
+ if (!op_tracker.dump_historic_ops(f)) {
ss << "op_tracker tracking is not enabled now, so no ops are tracked currently, even those get stuck. \
Please enable \"osd_enable_op_tracker\", and the tracker will start to track new ops received afterwards.";
- } else {
- op_tracker.dump_historic_ops(f);
}
} else if (command == "dump_op_pq_state") {
f->open_object_section("pq");