]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: sync msgr's require_authorizer with osdmap
authorKefu Chai <kchai@redhat.com>
Sun, 28 Apr 2019 14:44:40 +0000 (22:44 +0800)
committerKefu Chai <kchai@redhat.com>
Sun, 28 Apr 2019 16:12:57 +0000 (00:12 +0800)
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/crimson/osd/heartbeat.cc
src/crimson/osd/heartbeat.h
src/crimson/osd/osd.cc
src/crimson/osd/osd.h

index 94801b225f2066adb24ab28b04cd0ef4417fd6d6..f6c4e859e3429c42f5209951e1ce761474546ac0 100644 (file)
@@ -75,6 +75,14 @@ const entity_addrvec_t& Heartbeat::get_back_addrs() const
   return back_msgr.get_myaddrs();
 }
 
+void Heartbeat::set_require_authorizer(bool require_authorizer)
+{
+  if (front_msgr.get_require_authorizer() != require_authorizer) {
+    front_msgr.set_require_authorizer(require_authorizer);
+    back_msgr.set_require_authorizer(require_authorizer);
+  }
+}
+
 seastar::future<> Heartbeat::add_peer(osd_id_t peer, epoch_t epoch)
 {
   auto found = peers.find(peer);
index 4046b208a9e927fa1126ff4f5d1141875253e74e..923e26157097ff4f1da60b051b1099d89915d8ec 100644 (file)
@@ -41,6 +41,8 @@ public:
   const entity_addrvec_t& get_front_addrs() const;
   const entity_addrvec_t& get_back_addrs() const;
 
+  void set_require_authorizer(bool);
+
   // Dispatcher methods
   seastar::future<> ms_dispatch(ceph::net::Connection* conn,
                                MessageRef m) override;
index 124fed81d1e3afdc2323e8d977727cf8f77c5f82..cdc0c3935051318122046364d5d3576699f2656f 100644 (file)
@@ -620,6 +620,7 @@ seastar::future<> OSD::committed_osd_maps(version_t first,
           std::chrono::seconds(TICK_INTERVAL));
       }
     }
+    check_osdmap_features();
     // yay!
     return consume_map(osdmap->get_epoch());
   }).then([m, this] {
@@ -822,6 +823,15 @@ seastar::future<> OSD::handle_pg_log(ceph::net::ConnectionRef conn,
   return do_peering_event(m->get_spg(), std::move(evt));
 }
 
+void OSD::check_osdmap_features()
+{
+  if (osdmap->require_osd_release < CEPH_RELEASE_NAUTILUS) {
+    heartbeat->set_require_authorizer(false);
+  } else {
+    heartbeat->set_require_authorizer(true);
+  }
+}
+
 seastar::future<> OSD::consume_map(epoch_t epoch)
 {
   // todo: m-to-n: broadcast this news to all shards
index baeff0cc0f2bc3238115bd706d93c63a23e988b4..4486157da43777823e2331730fd9df6c820a1565 100644 (file)
@@ -153,7 +153,7 @@ private:
   seastar::future<> committed_osd_maps(version_t first,
                                        version_t last,
                                        Ref<MOSDMap> m);
-
+  void check_osdmap_features();
   // order the promises in descending order of the waited osdmap epoch,
   // so we can access all the waiters expecting a map whose epoch is less
   // than a given epoch