]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/extent_placement_manager: minor cleanups around get_writer()
authorYingxin Cheng <yingxin.cheng@intel.com>
Fri, 24 May 2024 05:48:29 +0000 (13:48 +0800)
committerMatan Breizman <mbreizma@redhat.com>
Sun, 16 Jun 2024 10:22:27 +0000 (13:22 +0300)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
(cherry picked from commit db5e077f31ce8ce8cf6f9f200288bf5a12223986)

src/crimson/os/seastore/extent_placement_manager.cc
src/crimson/os/seastore/extent_placement_manager.h

index bef27f7a5e5a78f998bd6562111121de0f4460ea..76df84f6c8885afc141ca67361b4628de2f0a7b5 100644 (file)
@@ -196,7 +196,7 @@ void ExtentPlacementManager::init(
     ceph_assert(segment_cleaner != nullptr);
     auto num_writers = generation_to_writer(dynamic_max_rewrite_generation + 1);
 
-    data_writers_by_gen.resize(num_writers, {});
+    data_writers_by_gen.resize(num_writers, nullptr);
     for (rewrite_gen_t gen = OOL_GENERATION; gen < MIN_COLD_GENERATION; ++gen) {
       writer_refs.emplace_back(std::make_unique<SegmentedOolWriter>(
            data_category_t::DATA, gen, *segment_cleaner,
@@ -221,7 +221,7 @@ void ExtentPlacementManager::init(
     auto rb_cleaner = dynamic_cast<RBMCleaner*>(cleaner.get());
     ceph_assert(rb_cleaner != nullptr);
     auto num_writers = generation_to_writer(dynamic_max_rewrite_generation + 1);
-    data_writers_by_gen.resize(num_writers, {});
+    data_writers_by_gen.resize(num_writers, nullptr);
     md_writers_by_gen.resize(num_writers, {});
     writer_refs.emplace_back(std::make_unique<RandomBlockOolWriter>(
            rb_cleaner));
index b98f32d8b4d936ab4f26bf6571e70ac2aea1ab6d..6c1f7939a2ad2c19f8fe6ae3eaa0666572203756 100644 (file)
@@ -246,7 +246,6 @@ public:
     auto writer = get_writer(placement_hint_t::REWRITE,
       get_extent_category(extent->get_type()),
       OOL_GENERATION);
-    ceph_assert(writer);
     return writer->can_inplace_rewrite(t, extent);
   }
 
@@ -323,9 +322,7 @@ public:
       addr = make_record_relative_paddr(0);
     } else {
       assert(category == data_category_t::METADATA);
-      assert(md_writers_by_gen[generation_to_writer(gen)]);
-      addr = md_writers_by_gen[
-         generation_to_writer(gen)]->alloc_paddr(length);
+      addr = get_writer(hint, category, gen)->alloc_paddr(length);
     }
     assert(!(category == data_category_t::DATA));
 
@@ -378,9 +375,7 @@ public:
     {
 #endif
       assert(category == data_category_t::DATA);
-      assert(data_writers_by_gen[generation_to_writer(gen)]);
-      auto addrs = data_writers_by_gen[
-          generation_to_writer(gen)]->alloc_paddrs(length);
+      auto addrs = get_writer(hint, category, gen)->alloc_paddrs(length);
       for (auto &ext : addrs) {
         auto left = ext.len;
         while (left > 0) {
@@ -593,15 +588,19 @@ private:
                               data_category_t category,
                               rewrite_gen_t gen) {
     assert(hint < placement_hint_t::NUM_HINTS);
+    // TODO: might worth considering the hint
     assert(is_rewrite_generation(gen));
     assert(gen != INLINE_GENERATION);
     assert(gen <= dynamic_max_rewrite_generation);
+    ExtentOolWriter* ret = nullptr;
     if (category == data_category_t::DATA) {
-      return data_writers_by_gen[generation_to_writer(gen)];
+      ret = data_writers_by_gen[generation_to_writer(gen)];
     } else {
       assert(category == data_category_t::METADATA);
-      return md_writers_by_gen[generation_to_writer(gen)];
+      ret = md_writers_by_gen[generation_to_writer(gen)];
     }
+    assert(ret != nullptr);
+    return ret;
   }
 
   /**