]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: Refactor cache dump path formatting and improve config lifetime handling 65878/head
authorEdwin Rodriguez <edwin.rodriguez1@ibm.com>
Wed, 8 Oct 2025 15:59:48 +0000 (11:59 -0400)
committerEdwin Rodriguez <edwin.rodriguez1@ibm.com>
Mon, 13 Oct 2025 12:39:45 +0000 (08:39 -0400)
Fixes: https://tracker.ceph.com/issues/73423
Fixes: https://tracker.ceph.com/issues/73424
Signed-off-by: Edwin Rodriguez <edwin.rodriguez1@ibm.com>
src/mds/MDCache.cc

index 98b566962b90a546fd71c0bd935122e0a27d046b..dc8abb912cee51a9438024df78b9f27f51b9b04f 100644 (file)
@@ -13285,9 +13285,13 @@ int MDCache::dump_cache(std::string_view fn, Formatter *f, double timeout)
   } else {
     char path[PATH_MAX] = "";
     if (fn.length()) {
-      snprintf(path, sizeof path, "%s", fn.data());
+      auto [out, size] = fmt::format_to_n(path, sizeof(path) - 1, "{}", fn);
+      *out = '\0';
     } else {
-      snprintf(path, sizeof path, "cachedump.%d.mds%d", (int)mds->mdsmap->get_epoch(), int(mds->get_nodeid()));
+      auto [out, size] = fmt::format_to_n(
+          path, sizeof(path) - 1, "cachedump.{}.mds{}",
+          (int)mds->mdsmap->get_epoch(), int(mds->get_nodeid()));
+      *out = '\0';
     }
 
     dout(1) << "dump_cache to " << path << dendl;
@@ -14639,9 +14643,11 @@ MDRequestRef MDCache::lock_path(LockPathConfig config, std::function<void(MDRequ
       cb(mdr);
     });
   }
+  auto config_lifetime = config.lifetime;
   mdr->internal_op_private = new LockPathState{std::move(config)};
-  if (config.lifetime) {
-    mds->timer.add_event_after(*config.lifetime, new LambdaContext([this, mdr]() {
+  // config was just moved so is in an undefined state
+  if (config_lifetime) {
+    mds->timer.add_event_after(*config_lifetime, new LambdaContext([this, mdr]() {
       if (!mdr->result && !mdr->aborted && !mdr->killed && !mdr->dead) {
         mdr->result = -ECANCELED;
         request_kill(mdr);