]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: introduce log subsys seastore_epm
authorYingxin Cheng <yingxin.cheng@intel.com>
Wed, 31 Aug 2022 05:51:15 +0000 (13:51 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Mon, 5 Sep 2022 03:28:02 +0000 (11:28 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/common/subsys.h
src/crimson/os/seastore/extent_placement_manager.cc
src/crimson/os/seastore/extent_placement_manager.h

index 7b7b67b7c0f25c6fd1226e8b672d01840a2f1644..9b3de521ecdd89fbde1f8f450fe8bba27b0c21b9 100644 (file)
@@ -89,6 +89,7 @@ SUBSYS(seastore_omap, 0, 5)
 SUBSYS(seastore_tm, 0, 5)    // logs below seastore tm
 SUBSYS(seastore_t, 0, 5)
 SUBSYS(seastore_cleaner, 0, 5)
+SUBSYS(seastore_epm, 0, 5)
 SUBSYS(seastore_lba, 0, 5)
 SUBSYS(seastore_fixedkv_tree, 0, 5)
 SUBSYS(seastore_cache, 0, 5)
index 472e7af2cb54599637836f676f8127b4bd8afd1b..383acaf3386b81e9fd19c95d96075a9b2aed4b19 100644 (file)
@@ -4,8 +4,9 @@
 #include "crimson/os/seastore/extent_placement_manager.h"
 
 #include "crimson/common/config_proxy.h"
+#include "crimson/os/seastore/logging.h"
 
-SET_SUBSYS(seastore_journal);
+SET_SUBSYS(seastore_epm);
 
 namespace crimson::os::seastore {
 
@@ -218,6 +219,63 @@ void ExtentPlacementManager::set_primary_device(Device *device)
   }
 }
 
+ExtentPlacementManager::open_ertr::future<>
+ExtentPlacementManager::open_for_write()
+{
+  LOG_PREFIX(ExtentPlacementManager::open_for_write);
+  INFO("started with {} devices", num_devices);
+  ceph_assert(primary_device != nullptr);
+  return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
+    return writer->open();
+  }).safe_then([this] {
+    return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
+      return writer->open();
+    });
+  });
+}
+
+ExtentPlacementManager::alloc_paddr_iertr::future<>
+ExtentPlacementManager::delayed_alloc_or_ool_write(
+    Transaction &t,
+    const std::list<LogicalCachedExtentRef> &delayed_extents)
+{
+  LOG_PREFIX(ExtentPlacementManager::delayed_alloc_or_ool_write);
+  DEBUGT("start with {} delayed extents",
+         t, delayed_extents.size());
+  assert(writer_refs.size());
+  return seastar::do_with(
+      std::map<ExtentOolWriter*, std::list<LogicalCachedExtentRef>>(),
+      [this, &t, &delayed_extents](auto& alloc_map) {
+    for (auto& extent : delayed_extents) {
+      // For now, just do ool allocation for any delayed extent
+      auto writer_ptr = get_writer(
+          extent->get_user_hint(),
+          get_extent_category(extent->get_type()),
+          extent->get_reclaim_generation());
+      alloc_map[writer_ptr].emplace_back(extent);
+    }
+    return trans_intr::do_for_each(alloc_map, [&t](auto& p) {
+      auto writer = p.first;
+      auto& extents = p.second;
+      return writer->alloc_write_ool_extents(t, extents);
+    });
+  });
+}
+
+ExtentPlacementManager::close_ertr::future<>
+ExtentPlacementManager::close()
+{
+  LOG_PREFIX(ExtentPlacementManager::close);
+  INFO("started");
+  return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
+    return writer->close();
+  }).safe_then([this] {
+    return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
+      return writer->close();
+    });
+  });
+}
+
 void ExtentPlacementManager::BackgroundProcess::log_state(const char *caller) const
 {
   LOG_PREFIX(BackgroundProcess::log_state);
index c2a21f9c054d61cbda99b4ccfcee866c69e91648..985b52580ecd1f5467a53cb75752410758eaa0bc 100644 (file)
@@ -8,7 +8,6 @@
 #include "crimson/os/seastore/async_cleaner.h"
 #include "crimson/os/seastore/cached_extent.h"
 #include "crimson/os/seastore/journal/segment_allocator.h"
-#include "crimson/os/seastore/logging.h"
 #include "crimson/os/seastore/transaction.h"
 
 namespace crimson::os::seastore {
@@ -124,18 +123,7 @@ public:
   }
 
   using open_ertr = ExtentOolWriter::open_ertr;
-  open_ertr::future<> open_for_write() {
-    LOG_PREFIX(ExtentPlacementManager::open);
-    SUBINFO(seastore_journal, "started with {} devices", num_devices);
-    ceph_assert(primary_device != nullptr);
-    return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
-      return writer->open();
-    }).safe_then([this] {
-      return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
-        return writer->open();
-      });
-    });
-  }
+  open_ertr::future<> open_for_write();
 
   void start_scan_space() {
     return background_process.start_scan_space();
@@ -210,46 +198,14 @@ public:
   using alloc_paddr_iertr = ExtentOolWriter::alloc_write_iertr;
   alloc_paddr_iertr::future<> delayed_alloc_or_ool_write(
     Transaction& t,
-    const std::list<LogicalCachedExtentRef>& delayed_extents) {
-    LOG_PREFIX(ExtentPlacementManager::delayed_alloc_or_ool_write);
-    SUBDEBUGT(seastore_journal, "start with {} delayed extents",
-              t, delayed_extents.size());
-    assert(writer_refs.size());
-    return seastar::do_with(
-        std::map<ExtentOolWriter*, std::list<LogicalCachedExtentRef>>(),
-        [this, &t, &delayed_extents](auto& alloc_map) {
-      for (auto& extent : delayed_extents) {
-        // For now, just do ool allocation for any delayed extent
-        auto writer_ptr = get_writer(
-            extent->get_user_hint(),
-            get_extent_category(extent->get_type()),
-            extent->get_reclaim_generation());
-        alloc_map[writer_ptr].emplace_back(extent);
-      }
-      return trans_intr::do_for_each(alloc_map, [&t](auto& p) {
-        auto writer = p.first;
-        auto& extents = p.second;
-        return writer->alloc_write_ool_extents(t, extents);
-      });
-    });
-  }
+    const std::list<LogicalCachedExtentRef>& delayed_extents);
 
   seastar::future<> stop_background() {
     return background_process.stop_background();
   }
 
   using close_ertr = ExtentOolWriter::close_ertr;
-  close_ertr::future<> close() {
-    LOG_PREFIX(ExtentPlacementManager::close);
-    SUBINFO(seastore_journal, "started");
-    return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
-      return writer->close();
-    }).safe_then([this] {
-      return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
-        return writer->close();
-      });
-    });
-  }
+  close_ertr::future<> close();
 
   using read_ertr = Device::read_ertr;
   read_ertr::future<> read(