diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 0a1ed9ed57e..65fc121587e 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -21,6 +21,11 @@ #include "messages/MOSDMap.h" #include "messages/MOSDOp.h" #include "messages/MOSDPGLog.h" +#include "messages/MOSDPGPull.h" +#include "messages/MOSDPGPush.h" +#include "messages/MOSDPGPushReply.h" +#include "messages/MOSDPGRecoveryDelete.h" +#include "messages/MOSDPGRecoveryDeleteReply.h" #include "messages/MOSDRepOpReply.h" #include "messages/MPGStats.h" @@ -32,7 +37,6 @@ #include "crimson/mon/MonClient.h" #include "crimson/net/Connection.h" #include "crimson/net/Messenger.h" -#include "crimson/os/cyanstore/cyan_object.h" #include "crimson/os/futurized_collection.h" #include "crimson/os/futurized_store.h" #include "crimson/osd/heartbeat.h" @@ -44,6 +48,7 @@ #include "crimson/osd/osd_operations/compound_peering_request.h" #include "crimson/osd/osd_operations/peering_event.h" #include "crimson/osd/osd_operations/pg_advance_map.h" +#include "crimson/osd/osd_operations/recovery_subrequest.h" #include "crimson/osd/osd_operations/replicated_request.h" namespace { @@ -585,6 +590,16 @@ seastar::future<> OSD::ms_dispatch(crimson::net::Connection* conn, MessageRef m) return seastar::now(); case MSG_COMMAND: return handle_command(conn, boost::static_pointer_cast(m)); + case MSG_OSD_PG_PULL: + [[fallthrough]]; + case MSG_OSD_PG_PUSH: + [[fallthrough]]; + case MSG_OSD_PG_PUSH_REPLY: + [[fallthrough]]; + case MSG_OSD_PG_RECOVERY_DELETE: + [[fallthrough]]; + case MSG_OSD_PG_RECOVERY_DELETE_REPLY: + return handle_recovery_subreq(conn, boost::static_pointer_cast(m)); case MSG_OSD_PG_LEASE: [[fallthrough]]; case MSG_OSD_PG_LEASE_ACK: @@ -595,6 +610,10 @@ seastar::future<> OSD::ms_dispatch(crimson::net::Connection* conn, MessageRef m) [[fallthrough]]; case MSG_OSD_PG_QUERY2: [[fallthrough]]; + case MSG_OSD_BACKFILL_RESERVE: + [[fallthrough]]; + case MSG_OSD_RECOVERY_RESERVE: + [[fallthrough]]; case MSG_OSD_PG_LOG: return handle_peering_op(conn, boost::static_pointer_cast(m)); case MSG_OSD_REPOP: @@ -995,6 +1014,16 @@ seastar::future<> OSD::handle_rep_op_reply(crimson::net::Connection* conn, return seastar::now(); } +seastar::future<> OSD::handle_recovery_subreq(crimson::net::Connection* conn, + Ref m) +{ + shard_services.start_operation( + *this, + conn->get_shared(), + std::move(m)); + return seastar::now(); +} + bool OSD::should_restart() const { if (!osdmap->is_up(whoami)) { diff --git a/src/crimson/osd/osd.h b/src/crimson/osd/osd.h index b6b6c270d31..d0f7c2230bd 100644 --- a/src/crimson/osd/osd.h +++ b/src/crimson/osd/osd.h @@ -180,6 +180,9 @@ private: Ref m); seastar::future<> handle_peering_op(crimson::net::Connection* conn, Ref m); + seastar::future<> handle_recovery_subreq(crimson::net::Connection* conn, + Ref m); + seastar::future<> committed_osd_maps(version_t first, version_t last,