PerfCounters &PG::get_peering_perf() {
return *(osd->recoverystate_perf);
}
+
+PerfCounters &PG::get_perf_logger() {
+ return *(osd->logger);
+}
+
+void PG::log_state_enter(const char *state) {
+ osd->pg_recovery_stats.log_enter(state);
+}
+
+void PG::log_state_exit(
+ const char *state_name, utime_t enter_time,
+ uint64_t events, utime_t event_dur) {
+ osd->pg_recovery_stats.log_exit(
+ state_name, ceph_clock_now() - enter_time, events, event_dur);
+}
/********* PG **********/
}
PerfCounters &get_peering_perf() override;
+ PerfCounters &get_perf_logger() override;
+ void log_state_enter(const char *state) override;
+ void log_state_exit(
+ const char *state_name, utime_t enter_time,
+ uint64_t events, utime_t event_dur) override;
void lock_suspend_timeout(ThreadPool::TPHandle &handle) {
handle.suspend_tp_timeout();
{
context< PeeringMachine >().log_enter(state_name);
DECLARE_LOCALS
- pg->osd->logger->inc(l_osd_pg_removing);
+ pl->get_perf_logger().inc(l_osd_pg_removing);
}
void PeeringState::ToDelete::exit()
DECLARE_LOCALS
// note: on a successful removal, this path doesn't execute. see
// _delete_some().
- pg->osd->logger->dec(l_osd_pg_removing);
+ pl->get_perf_logger().dec(l_osd_pg_removing);
pl->cancel_local_background_io_reservation();
}
{
DECLARE_LOCALS
psdout(5) << "enter " << state_name << dendl;
- pg->osd->pg_recovery_stats.log_enter(state_name);
+ pl->log_state_enter(state_name);
}
void PeeringState::PeeringMachine::log_exit(const char *state_name, utime_t enter_time)
DECLARE_LOCALS
utime_t dur = ceph_clock_now() - enter_time;
psdout(5) << "exit " << state_name << " " << dur << " " << event_count << " " << event_time << dendl;
- pg->osd->pg_recovery_stats.log_exit(state_name, ceph_clock_now() - enter_time,
- event_count, event_time);
+ pl->log_state_exit(state_name, enter_time, event_count, event_time);
event_count = 0;
event_time = utime_t();
}
virtual void set_probe_targets(const set<pg_shard_t> &probe_set) = 0;
virtual void clear_probe_targets() = 0;
- virtual PerfCounters &get_peering_perf() = 0;
-
virtual void clear_ready_to_merge() = 0;
virtual void queue_want_pg_temp(const vector<int> &wanted) = 0;
virtual epoch_t oldest_stored_osdmap() = 0;
virtual LogChannel &get_clog() = 0;
+ // Logging
+ virtual PerfCounters &get_peering_perf() = 0;
+ virtual PerfCounters &get_perf_logger() = 0;
+ virtual void log_state_enter(const char *state) = 0;
+ virtual void log_state_exit(
+ const char *state_name, utime_t enter_time,
+ uint64_t events, utime_t event_dur) = 0;
+
virtual ~PeeringListener() {}
};