From: Max Kellermann Date: Mon, 28 Oct 2024 20:59:19 +0000 (+0100) Subject: mds/SessionMap: un-inline methods to reduce header dependencies X-Git-Tag: v20.3.0~40^2~12 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=acdc6ce26a267f11348d4e8f4fa65e9f797c6c6d;p=ceph.git mds/SessionMap: un-inline methods to reduce header dependencies Signed-off-by: Max Kellermann --- diff --git a/src/mds/SessionMap.cc b/src/mds/SessionMap.cc index 31fe3f10e3996..d04f366856442 100644 --- a/src/mds/SessionMap.cc +++ b/src/mds/SessionMap.cc @@ -13,6 +13,8 @@ */ #include "SessionMap.h" +#include "Capability.h" +#include "CDentry.h" // for struct ClientLease #include "CInode.h" #include "MDSRank.h" #include "MDCache.h" @@ -25,9 +27,16 @@ #include "common/debug.h" #include "common/errno.h" #include "common/DecayCounter.h" +#include "common/perf_counters.h" #include "include/ceph_assert.h" #include "include/stringify.h" +#ifdef WITH_CRIMSON +#include "crimson/common/perf_counters_collection.h" +#else +#include "common/perf_counters_collection.h" +#endif + #define dout_context g_ceph_context #define dout_subsys ceph_subsys_mds #undef dout_prefix @@ -35,6 +44,21 @@ using namespace std; +void Session::touch_cap(Capability *cap) { + session_cache_liveness.hit(1.0); + caps.push_front(&cap->item_session_caps); +} + +void Session::touch_cap_bottom(Capability *cap) { + session_cache_liveness.hit(1.0); + caps.push_back(&cap->item_session_caps); +} + +void Session::touch_lease(ClientLease *r) { + session_cache_liveness.hit(1.0); + leases.push_back(&r->item_session_lease); +} + namespace { class SessionMapIOContext : public MDSIOContextBase { @@ -53,6 +77,18 @@ SessionMap::SessionMap(MDSRank *m) mds_session_metadata_threshold(g_conf().get_val("mds_session_metadata_threshold")) { } +SessionMap::~SessionMap() +{ + for (auto p : by_state) + delete p.second; + + if (logger) { + g_ceph_context->get_perfcounters_collection()->remove(logger); + } + + delete logger; +} + void SessionMap::register_perfcounters() { PerfCountersBuilder plb(g_ceph_context, "mds_sessions", @@ -645,6 +681,24 @@ void SessionMapStore::dump(Formatter *f) const f->close_section(); // Sessions } +Session* SessionMapStore::get_or_add_session(const entity_inst_t& i) { + Session *s; + auto session_map_entry = session_map.find(i.name); + if (session_map_entry != session_map.end()) { + s = session_map_entry->second; + } else { + s = session_map[i.name] = new Session(ConnectionRef()); + s->info.inst = i; + s->last_cap_renew = Session::clock::now(); + if (logger) { + logger->set(l_mdssm_session_count, session_map.size()); + logger->inc(l_mdssm_session_add); + } + } + + return s; +} + void SessionMapStore::generate_test_instances(std::list& ls) { // pretty boring for now diff --git a/src/mds/SessionMap.h b/src/mds/SessionMap.h index 582296b8aabe8..7ed36c5876688 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -30,21 +30,12 @@ #include "include/interval_set.h" #include "mdstypes.h" #include "mds/MDSAuthCaps.h" -#include "common/perf_counters.h" #include "common/DecayCounter.h" -#include "Capability.h" -#include "CDentry.h" // for struct ClientLease #include "MDSContext.h" #include "Mutation.h" // for struct MDRequestImpl #include "msg/Message.h" -#ifdef WITH_CRIMSON -#include "crimson/common/perf_counters_collection.h" -#else -#include "common/perf_counters_collection.h" -#endif - struct MDRequestImpl; enum { @@ -61,6 +52,8 @@ enum { l_mdssm_last, }; +struct ClientLease; +class Capability; class CInode; /* @@ -300,20 +293,10 @@ public: cap_acquisition.hit(count); } - void touch_cap(Capability *cap) { - session_cache_liveness.hit(1.0); - caps.push_front(&cap->item_session_caps); - } - - void touch_cap_bottom(Capability *cap) { - session_cache_liveness.hit(1.0); - caps.push_back(&cap->item_session_caps); - } + void touch_cap(Capability *cap); + void touch_cap_bottom(Capability *cap); - void touch_lease(ClientLease *r) { - session_cache_liveness.hit(1.0); - leases.push_back(&r->item_session_lease); - } + void touch_lease(ClientLease *r); bool is_any_flush_waiter() { return !waitfor_flush.empty(); @@ -571,23 +554,7 @@ public: rank = r; } - Session* get_or_add_session(const entity_inst_t& i) { - Session *s; - auto session_map_entry = session_map.find(i.name); - if (session_map_entry != session_map.end()) { - s = session_map_entry->second; - } else { - s = session_map[i.name] = new Session(ConnectionRef()); - s->info.inst = i; - s->last_cap_renew = Session::clock::now(); - if (logger) { - logger->set(l_mdssm_session_count, session_map.size()); - logger->inc(l_mdssm_session_add); - } - } - - return s; - } + Session* get_or_add_session(const entity_inst_t& i); static void generate_test_instances(std::list& ls); void reset_state() @@ -612,17 +579,7 @@ public: SessionMap() = delete; explicit SessionMap(MDSRank *m); - ~SessionMap() override - { - for (auto p : by_state) - delete p.second; - - if (logger) { - g_ceph_context->get_perfcounters_collection()->remove(logger); - } - - delete logger; - } + ~SessionMap() override; uint64_t set_state(Session *session, int state); void update_average_session_age();