From dfcdf7cf98aa51ecf2b5659f84ecc529f6e73786 Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Thu, 23 Nov 2017 14:55:29 +0300 Subject: [PATCH] osd/PG: avoid excessive lookups in share_pg_info() Signed-off-by: Igor Fedotov --- src/osd/PG.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 9ff134169e00..ed9d0896bf05 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -5082,22 +5082,23 @@ void PG::share_pg_info() i != actingbackfill.end(); ++i) { if (*i == pg_whoami) continue; - pg_shard_t peer = *i; - if (peer_info.count(peer)) { - peer_info[peer].last_epoch_started = info.last_epoch_started; - peer_info[peer].last_interval_started = info.last_interval_started; - peer_info[peer].history.merge(info.history); + auto pg_shard = *i; + auto peer = peer_info.find(pg_shard); + if (peer != peer_info.end()) { + peer->second.last_epoch_started = info.last_epoch_started; + peer->second.last_interval_started = info.last_interval_started; + peer->second.history.merge(info.history); } MOSDPGInfo *m = new MOSDPGInfo(get_osdmap()->get_epoch()); m->pg_list.push_back( make_pair( pg_notify_t( - peer.shard, pg_whoami.shard, + pg_shard.shard, pg_whoami.shard, get_osdmap()->get_epoch(), get_osdmap()->get_epoch(), info), past_intervals)); - osd->send_message_osd_cluster(peer.osd, m, get_osdmap()->get_epoch()); + osd->send_message_osd_cluster(pg_shard.osd, m, get_osdmap()->get_epoch()); } } -- 2.47.3