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);
+ void set_tracking(bool enable) {
+ RWLock::WLocker l(lock);
+ tracking_enabled = enable;
+ }
+ void dump_ops_in_flight(Formatter *f, bool print_only_blocked=false);
void dump_historic_ops(Formatter *f);
void register_inflight_op(xlist<TrackedOp*>::item *i);
void unregister_inflight_op(TrackedOp *i);
{
if (command == "dump_ops_in_flight" ||
command == "ops") {
+ RWLock::RLocker l(op_tracker.lock);
if (!op_tracker.tracking_enabled) {
- ss << "op_tracker tracking is not enabled";
+ 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") {
+ if (!op_tracker.tracking_enabled) {
+ 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") {
+ RWLock::RLocker l(op_tracker.lock);
if (!op_tracker.tracking_enabled) {
- ss << "op_tracker tracking is not enabled";
+ 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);
}
store->flush_journal();
} else if (command == "dump_ops_in_flight" ||
command == "ops") {
+ RWLock::RLocker l(op_tracker.lock);
if (!op_tracker.tracking_enabled) {
- ss << "op_tracker tracking is not enabled";
+ 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") {
+ if (!op_tracker.tracking_enabled) {
+ 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") {
+ RWLock::RLocker l(op_tracker.lock);
if (!op_tracker.tracking_enabled) {
- ss << "op_tracker tracking is not enabled";
+ 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);
}