]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd/PeeringState: send pg_info2 if release >= octopus
authorKefu Chai <kchai@redhat.com>
Thu, 10 Oct 2019 08:45:10 +0000 (16:45 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 10 Oct 2019 09:23:34 +0000 (17:23 +0800)
in octopus, we start using pg_info2 instead of pg_info. the latter is
being deprecated.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/osd/PeeringState.cc

index b12e2fbbdf6687cee58575363ea90bc9d07f59f8..8deb1c0cadad988019885caae27205897d36edbd 100644 (file)
@@ -2623,25 +2623,29 @@ void PeeringState::share_pg_info()
 
   // share new pg_info_t with replicas
   ceph_assert(!acting_recovery_backfill.empty());
-  for (set<pg_shard_t>::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());
   }
 }