From ba60d84e7bc22536965b48438f7f330c221cf0a9 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Wed, 26 Oct 2022 17:45:50 +0000 Subject: [PATCH] crimson/osd: settle snap_reserver within ShardServices This bit will be used by the upcoming `SnapTrimRequest`. Signed-off-by: Radoslaw Zarzynski --- src/crimson/osd/shard_services.cc | 10 +++++++++- src/crimson/osd/shard_services.h | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/crimson/osd/shard_services.cc b/src/crimson/osd/shard_services.cc index c34ae8cb2bc5b..c8668ea8fe9e8 100644 --- a/src/crimson/osd/shard_services.cc +++ b/src/crimson/osd/shard_services.cc @@ -135,7 +135,11 @@ OSDSingletonState::OSDSingletonState( &cct, &finisher, crimson::common::local_conf()->osd_max_backfills, - crimson::common::local_conf()->osd_min_recovery_priority) + crimson::common::local_conf()->osd_min_recovery_priority), + snap_reserver( + &cct, + &finisher, + crimson::common::local_conf()->osd_max_trimming_pgs) { crimson::common::local_conf().add_observer(this); osdmaps[0] = boost::make_local_shared(); @@ -317,6 +321,7 @@ const char** OSDSingletonState::get_tracked_conf_keys() const static const char* KEYS[] = { "osd_max_backfills", "osd_min_recovery_priority", + "osd_max_trimming_pgs", nullptr }; return KEYS; @@ -334,6 +339,9 @@ void OSDSingletonState::handle_conf_change( local_reserver.set_min_priority(conf->osd_min_recovery_priority); remote_reserver.set_min_priority(conf->osd_min_recovery_priority); } + if (changed.count("osd_max_trimming_pgs")) { + snap_reserver.set_max(conf->osd_max_trimming_pgs); + } } seastar::future diff --git a/src/crimson/osd/shard_services.h b/src/crimson/osd/shard_services.h index af25a110ea7e2..86397971f14ab 100644 --- a/src/crimson/osd/shard_services.h +++ b/src/crimson/osd/shard_services.h @@ -269,6 +269,7 @@ private: } finisher; AsyncReserver local_reserver; AsyncReserver remote_reserver; + AsyncReserver snap_reserver; epoch_t up_thru_wanted = 0; seastar::future<> send_alive(epoch_t want); @@ -478,6 +479,12 @@ public: FORWARD_TO_OSD_SINGLETON_TARGET( remote_dump_reservations, remote_reserver.dump) + FORWARD_TO_OSD_SINGLETON_TARGET( + snap_cancel_reservation, + snap_reserver.cancel_reservation) + FORWARD_TO_OSD_SINGLETON_TARGET( + snap_dump_reservations, + snap_reserver.dump) Context *invoke_context_on_core(core_id_t core, Context *c) { if (!c) return nullptr; @@ -523,6 +530,23 @@ public: invoke_context_on_core(seastar::this_shard_id(), on_reserved), invoke_context_on_core(seastar::this_shard_id(), on_preempt)); } + seastar::future<> snap_request_reservation( + spg_t item, + Context *on_reserved, + unsigned prio, + Context *on_preempt) { + return with_singleton( + [item, prio](OSDSingletonState &singleton, + Context *wrapped_on_reserved, Context *wrapped_on_preempt) { + return singleton.snap_reserver.request_reservation( + item, + wrapped_on_reserved, + prio, + wrapped_on_preempt); + }, + invoke_context_on_core(seastar::this_shard_id(), on_reserved), + invoke_context_on_core(seastar::this_shard_id(), on_preempt)); + } #undef FORWARD_CONST #undef FORWARD -- 2.39.5