From 2732488d7ace840d4e4867923c2cabd15db61ecc Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 16 Feb 2019 01:00:02 +0800 Subject: [PATCH] crimson/osd: populate crc settings we should populate messenger related settings before starting messengers. Signed-off-by: Kefu Chai --- src/crimson/osd/heartbeat.cc | 29 +++++++++++++++++++++-------- src/crimson/osd/heartbeat.h | 2 ++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/crimson/osd/heartbeat.cc b/src/crimson/osd/heartbeat.cc index 0d818b24f54d9..6dfefb3ba6913 100644 --- a/src/crimson/osd/heartbeat.cc +++ b/src/crimson/osd/heartbeat.cc @@ -53,26 +53,39 @@ seastar::future<> Heartbeat::start(entity_addrvec_t front_addrs, seastar::engine().cpu_id()) .then([this, front_addrs] (auto msgr) { front_msgr = msgr; - return front_msgr->try_bind(front_addrs, - local_conf()->ms_bind_port_min, - local_conf()->ms_bind_port_max); - }).then([this] { return front_msgr->start(this); }), + return start_messenger(front_msgr, front_addrs); + }), ceph::net::Messenger::create(entity_name_t::OSD(whoami), "hb_back", nonce, seastar::engine().cpu_id()) .then([this, back_addrs] (auto msgr) { back_msgr = msgr; - return back_msgr->try_bind(back_addrs, - local_conf()->ms_bind_port_min, - local_conf()->ms_bind_port_max); - }).then([this] { return back_msgr->start(this); })) + return start_messenger(back_msgr, back_addrs); + })) .then([this] { timer.arm_periodic( std::chrono::seconds(local_conf()->osd_heartbeat_interval)); }); } +seastar::future<> +Heartbeat::start_messenger(ceph::net::Messenger* msgr, + const entity_addrvec_t& addrs) +{ + if (local_conf()->ms_crc_data) { + msgr->set_crc_data(); + } + if (local_conf()->ms_crc_header) { + msgr->set_crc_header(); + } + return msgr->try_bind(addrs, + local_conf()->ms_bind_port_min, + local_conf()->ms_bind_port_max).then([msgr, this] { + return msgr->start(this); + }); +} + seastar::future<> Heartbeat::stop() { return seastar::when_all_succeed(front_msgr->shutdown(), diff --git a/src/crimson/osd/heartbeat.h b/src/crimson/osd/heartbeat.h index 209914e78d643..b5eb0f7c2d49a 100644 --- a/src/crimson/osd/heartbeat.h +++ b/src/crimson/osd/heartbeat.h @@ -63,6 +63,8 @@ private: /// add enough reporters for fast failure detection void add_reporter_peers(int whoami); + seastar::future<> start_messenger(ceph::net::Messenger* msgr, + const entity_addrvec_t& addrs); private: const int whoami; const uint32_t nonce; -- 2.39.5