diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 49b7c9d4f58..5a7e4cc0687 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -860,8 +860,6 @@ void PG::clear_primary_state() osd->snap_trim_wq.dequeue(this); agent_clear(); - - osd->remove_want_pg_temp(info.pgid.pgid); } /** @@ -4740,8 +4738,10 @@ void PG::start_peering_interval( actingbackfill.clear(); // reset primary state? - if (was_old_primary || is_primary()) - clear_primary_state(); + if (was_old_primary || is_primary()) { + osd->remove_want_pg_temp(info.pgid.pgid); + } + clear_primary_state(); // pg->on_* @@ -5541,6 +5541,7 @@ void PG::RecoveryState::Primary::exit() pg->want_acting.clear(); utime_t dur = ceph_clock_now(pg->cct) - enter_time; pg->osd->recoverystate_perf->tinc(rs_primary_latency, dur); + pg->clear_primary_state(); } /*---------Peering--------*/