X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fcrimson%2Fosd%2Fosd.h;h=10ff60d47017fa0ac3d5969387f2e44582905393;hb=aee94f6923ba628a85d855d0c5316d0da78bfa2a;hp=b3933e80c268cba7e4433a362867ca7136a49705;hpb=27f45121cc74e31203777ad565f78d8aad9b92a2;p=ceph.git diff --git a/ceph/src/crimson/osd/osd.h b/ceph/src/crimson/osd/osd.h index b3933e80c..10ff60d47 100644 --- a/ceph/src/crimson/osd/osd.h +++ b/ceph/src/crimson/osd/osd.h @@ -24,6 +24,7 @@ #include "crimson/osd/osdmap_gate.h" #include "crimson/osd/pg_map.h" #include "crimson/osd/osd_operations/peering_event.h" +#include "crimson/osd/state.h" #include "messages/MOSDOp.h" #include "osd/PeeringState.h" @@ -90,6 +91,8 @@ class OSD final : public crimson::net::Dispatcher, ceph::mono_time startup_time; + seastar::shared_mutex handle_osd_map_lock; + OSDSuperblock superblock; // Dispatcher methods @@ -97,6 +100,8 @@ class OSD final : public crimson::net::Dispatcher, void ms_handle_reset(crimson::net::ConnectionRef conn, bool is_replace) final; void ms_handle_remote_reset(crimson::net::ConnectionRef conn) final; + std::optional> do_ms_dispatch(crimson::net::ConnectionRef, MessageRef); + // mgr::WithStats methods // pg statistics including osd ones osd_stat_t osd_stat; @@ -108,6 +113,11 @@ class OSD final : public crimson::net::Dispatcher, void handle_authentication(const EntityName& name, const AuthCapsInfo& caps) final; + seastar::sharded pg_to_shard_mappings; + seastar::sharded osd_singleton_state; + seastar::sharded osd_states; + seastar::sharded shard_services; + crimson::osd::PGShardManager pg_shard_manager; std::unique_ptr heartbeat; @@ -126,6 +136,10 @@ public: crimson::net::MessengerRef hb_back_msgr); ~OSD() final; + auto &get_pg_shard_manager() { + return pg_shard_manager; + } + seastar::future<> open_meta_coll(); static seastar::future open_or_create_meta_coll( crimson::os::FuturizedStore &store @@ -146,6 +160,10 @@ public: /// @return the seq id of the pg stats being sent uint64_t send_pg_stats(); + auto &get_shard_services() { + return shard_services.local(); + } + private: static seastar::future<> _write_superblock( crimson::os::FuturizedStore &store, @@ -161,29 +179,29 @@ private: seastar::future<> osdmap_subscribe(version_t epoch, bool force_request); + seastar::future<> start_asok_admin(); + void write_superblock(ceph::os::Transaction& t); seastar::future<> read_superblock(); - bool require_mon_peer(crimson::net::Connection *conn, Ref m); - - seastar::future<> handle_osd_map(crimson::net::ConnectionRef conn, - Ref m); + seastar::future<> handle_osd_map(Ref m); + seastar::future<> _handle_osd_map(Ref m); seastar::future<> handle_pg_create(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> handle_osd_op(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> handle_rep_op(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> handle_rep_op_reply(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> handle_peering_op(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> handle_recovery_subreq(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> handle_scrub(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> handle_mark_me_down(crimson::net::ConnectionRef conn, - Ref m); + Ref m); seastar::future<> committed_osd_maps(version_t first, version_t last, @@ -192,20 +210,12 @@ private: seastar::future<> check_osdmap_features(); seastar::future<> handle_command(crimson::net::ConnectionRef conn, - Ref m); - seastar::future<> start_asok_admin(); + Ref m); seastar::future<> handle_update_log_missing(crimson::net::ConnectionRef conn, Ref m); seastar::future<> handle_update_log_missing_reply( crimson::net::ConnectionRef conn, Ref m); -public: - auto &get_pg_shard_manager() { - return pg_shard_manager; - } - ShardServices &get_shard_services() { - return pg_shard_manager.get_shard_services(); - } private: crimson::common::Gated gate;