]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PeeringState: send new message types
authorSage Weil <sage@redhat.com>
Thu, 22 Aug 2019 18:52:11 +0000 (13:52 -0500)
committerSage Weil <sage@redhat.com>
Mon, 9 Sep 2019 16:22:12 +0000 (11:22 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PeeringState.cc

index 68cfe2e8342ae8fbda080ddd47657879cee12920..81262f31760e92d957c85955740576871118bb69 100644 (file)
 #include "messages/MRecoveryReserve.h"
 #include "messages/MOSDScrubReserve.h"
 #include "messages/MOSDPGInfo.h"
+#include "messages/MOSDPGInfo2.h"
 #include "messages/MOSDPGTrim.h"
 #include "messages/MOSDPGLog.h"
 #include "messages/MOSDPGNotify.h"
+#include "messages/MOSDPGNotify2.h"
 #include "messages/MOSDPGQuery.h"
+#include "messages/MOSDPGQuery2.h"
 
 #define dout_context cct
 #define dout_subsys ceph_subsys_osd
@@ -29,11 +32,19 @@ BufferedRecoveryMessages::BufferedRecoveryMessages(
 
 void BufferedRecoveryMessages::send_notify(int to, const pg_notify_t &n)
 {
-  vector<pg_notify_t> notifies;
-  notifies.push_back(n);
-  message_map[to].push_back(
-    new MOSDPGNotify(n.epoch_sent, std::move(notifies))
-    );
+  if (require_osd_release >= ceph_release_t::octopus) {
+    spg_t pgid(n.info.pgid.pgid, n.to);
+    message_map[to].push_back(
+      make_message<MOSDPGNotify2>(
+       pgid,
+       n));
+  } else {
+    vector<pg_notify_t> notifies;
+    notifies.push_back(n);
+    message_map[to].push_back(
+      make_message<MOSDPGNotify>(n.epoch_sent, std::move(notifies))
+      );
+  }
 }
 
 void BufferedRecoveryMessages::send_query(
@@ -41,11 +52,17 @@ void BufferedRecoveryMessages::send_query(
   spg_t to_spgid,
   const pg_query_t &q)
 {
-  map<spg_t,pg_query_t> queries;
-  queries[to_spgid] = q;
-  message_map[to].push_back(
-    new MOSDPGQuery(q.epoch_sent, std::move(queries))
-    );
+  if (require_osd_release >= ceph_release_t::octopus) {
+    message_map[to].push_back(
+      make_message<MOSDPGQuery2>(to_spgid, q)
+      );
+  } else {
+    map<spg_t,pg_query_t> queries;
+    queries[to_spgid] = q;
+    message_map[to].push_back(
+      make_message<MOSDPGQuery>(q.epoch_sent, std::move(queries))
+      );
+  }
 }
 
 void BufferedRecoveryMessages::send_info(
@@ -55,14 +72,24 @@ void BufferedRecoveryMessages::send_info(
   epoch_t cur_epoch,
   const pg_info_t &info)
 {
-  MOSDPGInfo *m = new MOSDPGInfo(cur_epoch);
-  m->pg_list.push_back(
-    pg_notify_t(
-      to_spgid.shard,
-      info.pgid.shard,
-      min_epoch, cur_epoch,
-      info, PastIntervals()));
-  message_map[to].push_back(m);
+  if (require_osd_release >= ceph_release_t::octopus) {
+    message_map[to].push_back(
+      make_message<MOSDPGInfo2>(
+       to_spgid,
+       info,
+       cur_epoch,
+       min_epoch)
+      );
+  } else {
+    auto m = make_message<MOSDPGInfo>(cur_epoch);
+    m->pg_list.push_back(
+      pg_notify_t(
+       to_spgid.shard,
+       info.pgid.shard,
+       min_epoch, cur_epoch,
+       info, PastIntervals()));
+    message_map[to].push_back(m);
+  }
 }
 
 void PGPool::update(CephContext *cct, OSDMapRef map)