Skip to content

Commit 00a5eae

Browse files
author
chunmei
committed
crimson/osd: modify the interface to integrate with milticore-msg
Signed-off-by: chunmei <[email protected]>
1 parent c7628de commit 00a5eae

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

src/crimson/osd/osd.cc

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,9 @@ void OSD::ShardDispatcher::print(std::ostream& out) const
742742
std::optional<seastar::future<>>
743743
OSD::ms_dispatch(crimson::net::ConnectionRef conn, MessageRef m)
744744
{
745-
assert(seastar::this_shard_id() == PRIMARY_CORE);
745+
if (get_pg_shard_manager().is_stopping()) {
746+
return seastar::now();
747+
}
746748
bool dispatched = true;
747749
gate.dispatch_in_background(__func__, *this, [this, conn=std::move(conn),
748750
m=std::move(m), &dispatched]() mutable {
@@ -775,11 +777,7 @@ OSD::ms_dispatch(crimson::net::ConnectionRef conn, MessageRef m)
775777
case MSG_OSD_PG_UPDATE_LOG_MISSING_REPLY:
776778
{
777779
return conn.get_foreign().then([this, m = std::move(m)](auto f_conn) {
778-
return shard_dispatchers.invoke_on(PRIMARY_CORE,
779-
[f_conn = std::move(f_conn), m = std::move(m)]
780-
(auto &local_dispatcher) mutable ->seastar::future<>{
781-
return local_dispatcher.ms_dispatch(std::move(f_conn), std::move(m));
782-
});
780+
return shard_dispatchers.local().ms_dispatch(std::move(f_conn), std::move(m));
783781
});
784782
}
785783
default:
@@ -797,10 +795,20 @@ OSD::ShardDispatcher::ms_dispatch(
797795
crimson::net::ConnectionFRef f_conn,
798796
MessageRef m)
799797
{
800-
crimson::net::ConnectionRef conn = make_local_shared_foreign(std::move(f_conn));
801-
if (pg_shard_manager.is_stopping()) {
802-
return seastar::now();
798+
if (seastar::this_shard_id() != PRIMARY_CORE) {
799+
switch (m->get_type()) {
800+
case CEPH_MSG_OSD_MAP:
801+
case MSG_COMMAND:
802+
case MSG_OSD_MARK_ME_DOWN:
803+
return container().invoke_on(PRIMARY_CORE,
804+
[f_conn = std::move(f_conn), m = std::move(m)]
805+
(auto& local_dispatcher) mutable {
806+
return local_dispatcher.ms_dispatch(std::move(f_conn), std::move(m));
807+
});
808+
}
803809
}
810+
crimson::net::ConnectionRef conn = make_local_shared_foreign(std::move(f_conn));
811+
804812
switch (m->get_type()) {
805813
case CEPH_MSG_OSD_MAP:
806814
return handle_osd_map(boost::static_pointer_cast<MOSDMap>(m));

src/crimson/osd/osd.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,12 +236,10 @@ class OSD final : public crimson::net::Dispatcher,
236236
}
237237

238238
auto &get_pg_shard_manager() {
239-
ceph_assert(seastar::this_shard_id() == PRIMARY_CORE);
240239
return shard_dispatchers.local().get_pg_shard_manager();
241240
}
242241

243242
auto &get_pg_shard_manager() const {
244-
ceph_assert(seastar::this_shard_id() == PRIMARY_CORE);
245243
return shard_dispatchers.local().get_pg_shard_manager();
246244
}
247245

0 commit comments

Comments
 (0)