From: Yingxin Cheng Date: Thu, 17 Mar 2022 08:14:21 +0000 (+0800) Subject: crimson/os/seastore/EPM: clear allocators when close X-Git-Tag: v18.0.0~1193^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fef2b422abcaf5ef1854001f5afb6e2ffb609b71;p=ceph.git crimson/os/seastore/EPM: clear allocators when close SeaStore::mkfs() and mount() will both invoke TransactionManager::add_segment_manager(). Without clearing allocators, EPM will add the same allocator multiple times. Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/extent_placement_manager.h b/src/crimson/os/seastore/extent_placement_manager.h index 0d1c4e49cfb..9272e31caed 100644 --- a/src/crimson/os/seastore/extent_placement_manager.h +++ b/src/crimson/os/seastore/extent_placement_manager.h @@ -262,6 +262,8 @@ public: return crimson::do_for_each(allocators_item.second, [](auto& allocator) { return allocator->stop(); }); + }).safe_then([this] { + allocators.clear(); }); } diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 81147963b2d..707bd425601 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -345,6 +345,10 @@ SeaStore::mkfs_ertr::future<> SeaStore::mkfs(uuid_d new_osd_fsid) transaction_manager->add_segment_manager(segment_manager.get()); return transaction_manager->mkfs(); }).safe_then([this] { + for (auto& sec_sm : secondaries) { + transaction_manager->add_segment_manager(sec_sm.get()); + } + transaction_manager->add_segment_manager(segment_manager.get()); return transaction_manager->mount(); }).safe_then([this] { return repeat_eagain([this] {