]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Overload send_osd_message() in PeeringState
authorAmnon Hanuhov <ahanukov@redhat.com>
Tue, 8 Jun 2021 12:48:59 +0000 (15:48 +0300)
committerAmnon Hanuhov <ahanukov@redhat.com>
Sat, 19 Jun 2021 14:01:43 +0000 (17:01 +0300)
To allow passing MessageURef from crimson-osd and MessageRef from
ceph-osd

Signed-off-by: Amnon Hanuhov <ahanukov@redhat.com>
src/crimson/osd/osd_operations/peering_event.cc
src/osd/PeeringState.cc
src/osd/PeeringState.h

index 29b082687caa909f9337f0bb83e48b3ffb57a79b..02df7eff586a138986e829ab2992474921e9ceb0 100644 (file)
@@ -124,7 +124,7 @@ void RemotePeeringEvent::on_pg_absent()
     const pg_info_t empty{spg_t{pgid.pgid, q.query.to}};
     if (q.query.type == q.query.LOG ||
        q.query.type == q.query.FULLLOG)  {
-      auto m = ceph::make_message<MOSDPGLog>(q.query.from, q.query.to,
+      auto m = crimson::make_message<MOSDPGLog>(q.query.from, q.query.to,
                                             map_epoch, empty,
                                             q.query.epoch_sent);
       ctx.send_osd_message(q.from.osd, std::move(m));
index 48e5fc332b9c0708cc9c30a1c0a052a56808d27c..aaf06f8260c5554329faccc482e9ff3f38ee3426 100644 (file)
@@ -42,7 +42,7 @@ BufferedRecoveryMessages::BufferedRecoveryMessages(PeeringCtx &ctx)
 void BufferedRecoveryMessages::send_notify(int to, const pg_notify_t &n)
 {
   spg_t pgid(n.info.pgid.pgid, n.to);
-  send_osd_message(to, make_message<MOSDPGNotify2>(pgid, n));
+  send_osd_message(to, TOPNSPC::make_message<MOSDPGNotify2>(pgid, n));
 }
 
 void BufferedRecoveryMessages::send_query(
@@ -50,7 +50,7 @@ void BufferedRecoveryMessages::send_query(
   spg_t to_spgid,
   const pg_query_t &q)
 {
-  send_osd_message(to, make_message<MOSDPGQuery2>(to_spgid, q));
+  send_osd_message(to, TOPNSPC::make_message<MOSDPGQuery2>(to_spgid, q));
 }
 
 void BufferedRecoveryMessages::send_info(
@@ -64,7 +64,7 @@ void BufferedRecoveryMessages::send_info(
 {
   send_osd_message(
     to,
-    make_message<MOSDPGInfo2>(
+    TOPNSPC::make_message<MOSDPGInfo2>(
       to_spgid,
       info,
       cur_epoch,
index cf49c9ba3c10aa92680801356f7d988e537e29eb..c49a46697d07fa05ebbd27901007a157a2679687 100644 (file)
@@ -61,7 +61,11 @@ struct PeeringCtx;
 
 // [primary only] content recovery state
 struct BufferedRecoveryMessages {
+#if defined(WITH_SEASTAR)
+  std::map<int, std::vector<MessageURef>> message_map;
+#else
   std::map<int, std::vector<MessageRef>> message_map;
+#endif
 
   BufferedRecoveryMessages() = default;
   BufferedRecoveryMessages(PeeringCtx &ctx);
@@ -71,14 +75,15 @@ struct BufferedRecoveryMessages {
       auto &ovec = message_map[target];
       // put buffered messages in front
       ls.reserve(ls.size() + ovec.size());
-      ls.insert(ls.end(), ovec.begin(), ovec.end());
+      ls.insert(ls.end(), std::make_move_iterator(ovec.begin()), std::make_move_iterator(ovec.end()));
       ovec.clear();
       ovec.swap(ls);
     }
   }
 
-  void send_osd_message(int target, MessageRef m) {
-    message_map[target].push_back(std::move(m));
+  template <class MsgT> // MsgT = MessageRef for ceph-osd and MessageURef for crimson-osd
+  void send_osd_message(int target, MsgT&& m) {
+    message_map[target].emplace_back(std::forward<MsgT>(m));
   }
   void send_notify(int to, const pg_notify_t &n);
   void send_query(int to, spg_t spgid, const pg_query_t &q);
@@ -222,8 +227,9 @@ struct PeeringCtxWrapper {
 
   PeeringCtxWrapper(PeeringCtxWrapper &&ctx) = default;
 
-  void send_osd_message(int target, MessageRef m) {
-    msgs.send_osd_message(target, std::move(m));
+  template <class MsgT> // MsgT = MessageRef for ceph-osd and MessageURef for crimson-osd
+  void send_osd_message(int target, MsgT&& m) {
+    msgs.send_osd_message(target, std::forward<MsgT>(m));
   }
   void send_notify(int to, const pg_notify_t &n) {
     msgs.send_notify(to, n);