From da338250f5647c866989396d6a0f9d4ba52aa426 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 12 Jan 2021 13:48:53 +0800 Subject: [PATCH] osd/pg_scrubber: do not print log in dtors PG::recovery_state is defined after PG::m_scrubber, while PG::gen_prefix() retrieves the osdmap from recovery_state. in PgScrubber::~PgScrubber(), we print out the osdmap by dereferencing recovery_state for the prefix of the logging message. in other words, PgScrubber's destructor is referencing "recovery_state" which is already destroyed. in this change, the logging messages are removed from dtors. we can print out the pgid in a follow-up PR if it helps. Fixes: https://tracker.ceph.com/issues/48777 Signed-off-by: Kefu Chai --- src/osd/pg_scrubber.cc | 9 +-------- src/osd/scrub_machine.cc | 5 +---- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/osd/pg_scrubber.cc b/src/osd/pg_scrubber.cc index a7501da146c27..5c9d3b8e4492b 100644 --- a/src/osd/pg_scrubber.cc +++ b/src/osd/pg_scrubber.cc @@ -1790,10 +1790,7 @@ void PgScrubber::handle_query_state(ceph::Formatter* f) f->close_section(); } -PgScrubber::~PgScrubber() -{ - dout(10) << __func__ << dendl; -} +PgScrubber::~PgScrubber() = default; PgScrubber::PgScrubber(PG* pg) : m_pg{pg} @@ -2041,8 +2038,6 @@ ReplicaReservations::~ReplicaReservations() // send un-reserve messages to all reserved replicas. We do not wait for answer (there // wouldn't be one). Other incoming messages will be discarded on the way, by our // owner. - dout(10) << __func__ << " " << m_reserved_peers << dendl; - epoch_t epoch = m_pg->get_osdmap_epoch(); for (auto& p : m_reserved_peers) { @@ -2149,7 +2144,6 @@ LocalReservation::~LocalReservation() if (m_holding_local_reservation) { m_holding_local_reservation = false; m_osds->dec_scrubs_local(); - dout(20) << __func__ << ": local OSD scrub resources freed" << dendl; } } @@ -2179,7 +2173,6 @@ ReservedByRemotePrimary::~ReservedByRemotePrimary() if (m_reserved_by_remote_primary) { m_reserved_by_remote_primary = false; m_osds->dec_scrubs_remote(); - dout(20) << __func__ << ": scrub resources held for Primary were freed" << dendl; } } diff --git a/src/osd/scrub_machine.cc b/src/osd/scrub_machine.cc index 42133450d7e09..271e1362fc778 100644 --- a/src/osd/scrub_machine.cc +++ b/src/osd/scrub_machine.cc @@ -413,10 +413,7 @@ ScrubMachine::ScrubMachine(PG* pg, ScrubMachineListener* pg_scrub) dout(15) << "ScrubMachine created " << m_pg_id << dendl; } -ScrubMachine::~ScrubMachine() -{ - dout(20) << "~ScrubMachine " << m_pg_id << dendl; -} +ScrubMachine::~ScrubMachine() = default; // -------- for replicas ----------------------------------------------------- -- 2.47.3