From a051a11bff4796a24b852348bbbfd711b09ddd5e Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Fri, 24 May 2024 13:48:29 +0800 Subject: [PATCH] crimson/os/seastore/extent_placement_manager: minor cleanups around get_writer() Signed-off-by: Yingxin Cheng (cherry picked from commit db5e077f31ce8ce8cf6f9f200288bf5a12223986) --- .../os/seastore/extent_placement_manager.cc | 4 ++-- .../os/seastore/extent_placement_manager.h | 17 ++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/crimson/os/seastore/extent_placement_manager.cc b/src/crimson/os/seastore/extent_placement_manager.cc index bef27f7a5e5a7..76df84f6c8885 100644 --- a/src/crimson/os/seastore/extent_placement_manager.cc +++ b/src/crimson/os/seastore/extent_placement_manager.cc @@ -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( data_category_t::DATA, gen, *segment_cleaner, @@ -221,7 +221,7 @@ void ExtentPlacementManager::init( auto rb_cleaner = dynamic_cast(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( rb_cleaner)); diff --git a/src/crimson/os/seastore/extent_placement_manager.h b/src/crimson/os/seastore/extent_placement_manager.h index b98f32d8b4d93..6c1f7939a2ad2 100644 --- a/src/crimson/os/seastore/extent_placement_manager.h +++ b/src/crimson/os/seastore/extent_placement_manager.h @@ -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; } /** -- 2.39.5