]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/SessionMap: un-inline methods to reduce header dependencies
authorMax Kellermann <max.kellermann@ionos.com>
Mon, 28 Oct 2024 20:59:19 +0000 (21:59 +0100)
committerMax Kellermann <max.kellermann@ionos.com>
Thu, 17 Apr 2025 16:00:16 +0000 (18:00 +0200)
Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
src/mds/SessionMap.cc
src/mds/SessionMap.h

index 31fe3f10e3996667bc6678da9e2f83fa899f4ab4..d04f3668564428658efbc5d5da2a3de6907c1f2e 100644 (file)
@@ -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"
 #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
 
 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<Option::size_t>("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<SessionMapStore*>& ls)
 {
   // pretty boring for now
index 582296b8aabe8a0f148c5f09fbc1d0b0609feb30..7ed36c5876688d1df50c3a97d6ece96b9ee2b0f6 100644 (file)
 #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<SessionMapStore*>& 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();