From 10d937296e65b37d4a6396c3fd8bb9216875fb3f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 2 Apr 2019 17:45:45 -0700 Subject: [PATCH] osd/: pass OSDService::logger and log_enter/exit through PeeringListener Signed-off-by: Samuel Just --- src/osd/PG.cc | 15 +++++++++++++++ src/osd/PG.h | 5 +++++ src/osd/PeeringState.cc | 9 ++++----- src/osd/PeeringState.h | 10 ++++++++-- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index d1e1196cf04..f79ad47551e 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -306,6 +306,21 @@ std::ostream& PG::gen_prefix(std::ostream& out) const 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 **********/ diff --git a/src/osd/PG.h b/src/osd/PG.h index 48b57cef055..c46c3558eff 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -255,6 +255,11 @@ public: } 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(); diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index 395e304adae..b8627871c0e 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -4482,7 +4482,7 @@ PeeringState::ToDelete::ToDelete(my_context ctx) { 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() @@ -4491,7 +4491,7 @@ 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(); } @@ -5231,7 +5231,7 @@ void PeeringState::PeeringMachine::log_enter(const char *state_name) { 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) @@ -5239,8 +5239,7 @@ void PeeringState::PeeringMachine::log_exit(const char *state_name, utime_t ente 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(); } diff --git a/src/osd/PeeringState.h b/src/osd/PeeringState.h index 52c88711aea..f718db0a3b2 100644 --- a/src/osd/PeeringState.h +++ b/src/osd/PeeringState.h @@ -105,8 +105,6 @@ public: virtual void set_probe_targets(const set &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 &wanted) = 0; @@ -162,6 +160,14 @@ public: 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() {} }; -- 2.39.5