From: Myoungwon Oh Date: Mon, 25 Nov 2024 12:22:50 +0000 (+0000) Subject: crimson/os/seastore: initialize omap tree using omap type X-Git-Tag: v20.0.0~24^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=efba0106de4f3dcb75a5f84e88886d939b0d6f5c;p=ceph.git crimson/os/seastore: initialize omap tree using omap type Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/omap_manager.h b/src/crimson/os/seastore/omap_manager.h index f558f5edc3e6..e398b18d1fc3 100644 --- a/src/crimson/os/seastore/omap_manager.h +++ b/src/crimson/os/seastore/omap_manager.h @@ -40,7 +40,8 @@ public: */ using initialize_omap_iertr = base_iertr; using initialize_omap_ret = initialize_omap_iertr::future; - virtual initialize_omap_ret initialize_omap(Transaction &t, laddr_t hint) = 0; + virtual initialize_omap_ret initialize_omap(Transaction &t, laddr_t hint, + omap_type_t type) = 0; /** * get value(string) by key(string) diff --git a/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.cc b/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.cc index 3189c2bc6334..1e4afffaf7bc 100644 --- a/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.cc +++ b/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.cc @@ -18,17 +18,18 @@ BtreeOMapManager::BtreeOMapManager( : tm(tm) {} BtreeOMapManager::initialize_omap_ret -BtreeOMapManager::initialize_omap(Transaction &t, laddr_t hint) +BtreeOMapManager::initialize_omap(Transaction &t, laddr_t hint, + omap_type_t type) { LOG_PREFIX(BtreeOMapManager::initialize_omap); DEBUGT("hint: {}", t, hint); return tm.alloc_non_data_extent(t, hint, OMAP_LEAF_BLOCK_SIZE) - .si_then([hint, &t](auto&& root_extent) { + .si_then([hint, &t, type](auto&& root_extent) { root_extent->set_size(0); omap_node_meta_t meta{1}; root_extent->set_meta(meta); omap_root_t omap_root; - omap_root.update(root_extent->get_laddr(), 1, hint); + omap_root.update(root_extent->get_laddr(), 1, hint, type); t.get_omap_tree_stats().depth = 1u; t.get_omap_tree_stats().extents_num_delta++; return initialize_omap_iertr::make_ready_future(omap_root); diff --git a/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.h b/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.h index 7fcba64c0334..db6ba5ea5312 100644 --- a/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.h +++ b/src/crimson/os/seastore/omap_manager/btree/btree_omap_manager.h @@ -65,7 +65,8 @@ class BtreeOMapManager : public OMapManager { public: explicit BtreeOMapManager(TransactionManager &tm); - initialize_omap_ret initialize_omap(Transaction &t, laddr_t hint) final; + initialize_omap_ret initialize_omap(Transaction &t, laddr_t hint, + omap_type_t type) final; omap_get_value_ret omap_get_value( const omap_root_t &omap_root, diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 6a866cb1f9be..cd9536b9568a 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -2262,7 +2262,8 @@ SeaStore::Shard::_omap_set_kvs( !root.is_null() ? tm_iertr::now() : omap_manager.initialize_omap( - t, onode->get_metadata_hint(device->get_block_size()) + t, onode->get_metadata_hint(device->get_block_size()), + root.get_type() ).si_then([&root](auto new_root) { root = new_root; });