#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"
ceph::mono_time startup_time;
+ seastar::shared_mutex handle_osd_map_lock;
+
OSDSuperblock superblock;
// Dispatcher methods
void ms_handle_reset(crimson::net::ConnectionRef conn, bool is_replace) final;
void ms_handle_remote_reset(crimson::net::ConnectionRef conn) final;
+ std::optional<seastar::future<>> do_ms_dispatch(crimson::net::ConnectionRef, MessageRef);
+
// mgr::WithStats methods
// pg statistics including osd ones
osd_stat_t osd_stat;
void handle_authentication(const EntityName& name,
const AuthCapsInfo& caps) final;
+ seastar::sharded<PGShardMapping> pg_to_shard_mappings;
+ seastar::sharded<OSDSingletonState> osd_singleton_state;
+ seastar::sharded<OSDState> osd_states;
+ seastar::sharded<ShardServices> shard_services;
+
crimson::osd::PGShardManager pg_shard_manager;
std::unique_ptr<Heartbeat> heartbeat;
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<OSDMeta> open_or_create_meta_coll(
crimson::os::FuturizedStore &store
/// @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,
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<Message> m);
-
- seastar::future<> handle_osd_map(crimson::net::ConnectionRef conn,
- Ref<MOSDMap> m);
+ seastar::future<> handle_osd_map(Ref<MOSDMap> m);
+ seastar::future<> _handle_osd_map(Ref<MOSDMap> m);
seastar::future<> handle_pg_create(crimson::net::ConnectionRef conn,
- Ref<MOSDPGCreate2> m);
+ Ref<MOSDPGCreate2> m);
seastar::future<> handle_osd_op(crimson::net::ConnectionRef conn,
- Ref<MOSDOp> m);
+ Ref<MOSDOp> m);
seastar::future<> handle_rep_op(crimson::net::ConnectionRef conn,
- Ref<MOSDRepOp> m);
+ Ref<MOSDRepOp> m);
seastar::future<> handle_rep_op_reply(crimson::net::ConnectionRef conn,
- Ref<MOSDRepOpReply> m);
+ Ref<MOSDRepOpReply> m);
seastar::future<> handle_peering_op(crimson::net::ConnectionRef conn,
- Ref<MOSDPeeringOp> m);
+ Ref<MOSDPeeringOp> m);
seastar::future<> handle_recovery_subreq(crimson::net::ConnectionRef conn,
- Ref<MOSDFastDispatchOp> m);
+ Ref<MOSDFastDispatchOp> m);
seastar::future<> handle_scrub(crimson::net::ConnectionRef conn,
- Ref<MOSDScrub2> m);
+ Ref<MOSDScrub2> m);
seastar::future<> handle_mark_me_down(crimson::net::ConnectionRef conn,
- Ref<MOSDMarkMeDown> m);
+ Ref<MOSDMarkMeDown> m);
seastar::future<> committed_osd_maps(version_t first,
version_t last,
seastar::future<> check_osdmap_features();
seastar::future<> handle_command(crimson::net::ConnectionRef conn,
- Ref<MCommand> m);
- seastar::future<> start_asok_admin();
+ Ref<MCommand> m);
seastar::future<> handle_update_log_missing(crimson::net::ConnectionRef conn,
Ref<MOSDPGUpdateLogMissing> m);
seastar::future<> handle_update_log_missing_reply(
crimson::net::ConnectionRef conn,
Ref<MOSDPGUpdateLogMissingReply> 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;