From f16b628c9e62fdef82ef71223114b2c3b38ce9b2 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 30 Aug 2020 16:24:41 +0800 Subject: [PATCH] crimson/osd: call PeeringState::get_peer_missing(peer) as PeeringState::get_peer_missing(const pg_shard_t &peer) already checks for the non-existent shard, and because `get_replica_recovery_order()` never returns primary osd, it's safe to use `PeeringState::get_peer_missing(peer)` instead of `pg->get_peering_state().get_peer_missing().find(peer)`. Signed-off-by: Kefu Chai --- src/crimson/osd/pg_recovery.cc | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index 4237729aa79..aeb4db4ccbe 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -190,20 +190,18 @@ size_t PGRecovery::start_replica_recovery_ops( auto recovery_order = get_replica_recovery_order(); for (auto &peer : recovery_order) { assert(peer != pg->get_peering_state().get_primary()); - auto pm = pg->get_peering_state().get_peer_missing().find(peer); - assert(pm != pg->get_peering_state().get_peer_missing().end()); + const auto& pm = pg->get_peering_state().get_peer_missing(peer); crimson::get_logger(ceph_subsys_osd).debug( "{}: peer osd.{} missing {} objects", __func__, - peer, pm->second.num_missing()); + peer, pm.num_missing()); crimson::get_logger(ceph_subsys_osd).trace( "{}: peer osd.{} missing {}", __func__, - peer, pm->second.get_items()); + peer, pm.get_items()); // recover oldest first - const pg_missing_t &m(pm->second); - for (auto p = m.get_rmissing().begin(); - p != m.get_rmissing().end() && started < max_to_start; + for (auto p = pm.get_rmissing().begin(); + p != pm.get_rmissing().end() && started < max_to_start; ++p) { const auto &soid = p->second; @@ -237,7 +235,7 @@ size_t PGRecovery::start_replica_recovery_ops( crimson::get_logger(ceph_subsys_osd).debug( "{}: soid {} is a delete, removing", __func__, soid); map::const_iterator r = - m.get_items().find(soid); + pm.get_items().find(soid); started += prep_object_replica_deletes( soid, r->second.need, out); continue; @@ -262,7 +260,7 @@ size_t PGRecovery::start_replica_recovery_ops( "{}: recover_object_replicas({})", __func__, soid); - map::const_iterator r = m.get_items().find( + map::const_iterator r = pm.get_items().find( soid); started += prep_object_replica_pushes( soid, r->second.need, out); -- 2.39.5