From 972713eb23424b1785959b101068f082e57de9fe Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 10 Oct 2019 16:45:10 +0800 Subject: [PATCH] osd/PeeringState: send pg_info2 if release >= octopus in octopus, we start using pg_info2 instead of pg_info. the latter is being deprecated. Signed-off-by: Kefu Chai --- src/osd/PeeringState.cc | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index b12e2fbbdf6..8deb1c0cada 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -2623,25 +2623,29 @@ void PeeringState::share_pg_info() // share new pg_info_t with replicas ceph_assert(!acting_recovery_backfill.empty()); - for (set::iterator i = acting_recovery_backfill.begin(); - i != acting_recovery_backfill.end(); - ++i) { - if (*i == pg_whoami) continue; - auto pg_shard = *i; - auto peer = peer_info.find(pg_shard); - if (peer != peer_info.end()) { + for (auto pg_shard : acting_recovery_backfill) { + if (pg_shard == pg_whoami) continue; + if (auto peer = peer_info.find(pg_shard); 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_epoch()); - m->pg_list.emplace_back( - pg_notify_t( - pg_shard.shard, pg_whoami.shard, - get_osdmap_epoch(), - get_osdmap_epoch(), - info, - past_intervals)); + Message* m = nullptr; + if (last_require_osd_release >= ceph_release_t::octopus) { + m = new MOSDPGInfo2{spg_t{info.pgid.pgid, pg_shard.shard}, + info, + get_osdmap_epoch(), + get_osdmap_epoch(), + get_lease(), {}}; + } else { + m = new MOSDPGInfo{get_osdmap_epoch(), + {pg_notify_t{pg_shard.shard, + pg_whoami.shard, + get_osdmap_epoch(), + get_osdmap_epoch(), + info, + past_intervals}}}; + } pl->send_cluster_message(pg_shard.osd, m, get_osdmap_epoch()); } } -- 2.39.5