From 3fee31f0182298a2bf877fe90b04f9a333d83f0d Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 1 Oct 2022 18:34:33 +0800 Subject: [PATCH] crimson/osd: signal should_stop in OSD::shutdown() so osd is able to shut itself down per monitor's request. Signed-off-by: Kefu Chai --- src/crimson/osd/main.cc | 3 ++- src/crimson/osd/osd.cc | 5 ++++- src/crimson/osd/osd.h | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/crimson/osd/main.cc b/src/crimson/osd/main.cc index 1eead7b924c0e..73ff2447244bd 100644 --- a/src/crimson/osd/main.cc +++ b/src/crimson/osd/main.cc @@ -307,7 +307,8 @@ int main(int argc, const char* argv[]) local_conf().get_config_values()).get(); crimson::osd::OSD osd( - whoami, nonce, std::ref(*store), cluster_msgr, client_msgr, + whoami, nonce, std::ref(should_stop.abort_source()), + std::ref(*store), cluster_msgr, client_msgr, hb_front_msgr, hb_back_msgr); if (config.count("mkkey")) { diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 9af4699dbf47d..344086e433972 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -75,6 +75,7 @@ using crimson::os::FuturizedStore; namespace crimson::osd { OSD::OSD(int id, uint32_t nonce, + seastar::abort_source& abort_source, crimson::os::FuturizedStore& store, crimson::net::MessengerRef cluster_msgr, crimson::net::MessengerRef public_msgr, @@ -82,6 +83,7 @@ OSD::OSD(int id, uint32_t nonce, crimson::net::MessengerRef hb_back_msgr) : whoami{id}, nonce{nonce}, + abort_source{abort_source}, // do this in background beacon_timer{[this] { (void)send_beacon(); }}, cluster_msgr{cluster_msgr}, @@ -1178,7 +1180,8 @@ seastar::future<> OSD::restart() seastar::future<> OSD::shutdown() { - // TODO + logger().info("shutting down per osdmap"); + abort_source.request_abort(); return seastar::now(); } diff --git a/src/crimson/osd/osd.h b/src/crimson/osd/osd.h index 02aa2d3e25ff0..fbdf10192576f 100644 --- a/src/crimson/osd/osd.h +++ b/src/crimson/osd/osd.h @@ -3,6 +3,7 @@ #pragma once +#include #include #include #include @@ -62,6 +63,7 @@ class OSD final : public crimson::net::Dispatcher, private crimson::mgr::WithStats { const int whoami; const uint32_t nonce; + seastar::abort_source& abort_source; seastar::timer beacon_timer; // talk with osd crimson::net::MessengerRef cluster_msgr; @@ -116,6 +118,7 @@ class OSD final : public crimson::net::Dispatcher, public: OSD(int id, uint32_t nonce, + seastar::abort_source& abort_source, crimson::os::FuturizedStore& store, crimson::net::MessengerRef cluster_msgr, crimson::net::MessengerRef client_msgr, -- 2.39.5