From 6e16644d2705f3198916d2f2ea054b46be98fc10 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 12 Feb 2021 03:58:18 +0000 Subject: [PATCH] crimson/os/seastore/omap_manager: add byte order independent root Also includes minor stylistic cleanups. Signed-off-by: Samuel Just --- src/crimson/os/seastore/omap_manager.h | 21 +--- .../omap_manager/btree/btree_omap_manager.cc | 112 +++++++++++------- .../omap_manager/btree/btree_omap_manager.h | 25 ++-- src/crimson/os/seastore/seastore_types.h | 62 ++++++++++ .../crimson/seastore/test_omap_manager.cc | 62 +++++----- 5 files changed, 176 insertions(+), 106 deletions(-) diff --git a/src/crimson/os/seastore/omap_manager.h b/src/crimson/os/seastore/omap_manager.h index 74eeb660d2f..e9ca56e673c 100644 --- a/src/crimson/os/seastore/omap_manager.h +++ b/src/crimson/os/seastore/omap_manager.h @@ -18,21 +18,6 @@ namespace crimson::os::seastore { -enum class omap_root_state_t : uint8_t { - INITIAL = 0, - MUTATED = 1, - NONE = 0xFF -}; - -struct omap_root_t { - depth_t depth = 0; - omap_root_state_t state; - laddr_t omap_root_laddr; - omap_root_t(depth_t dep, laddr_t laddr) - : depth(dep), - omap_root_laddr(laddr) { state = omap_root_state_t::INITIAL; } -}; - struct list_keys_result_t { std::vector keys; std::optional next; // if return std::nullopt, means list all keys in omap tree. @@ -84,10 +69,9 @@ public: * @param Transaction &t, current transaction * @param string &key, omap string key * @param string &value, mapped value corresponding key - * @retval mutation_result_t, status should be success. */ using omap_set_key_ertr = base_ertr; - using omap_set_key_ret = omap_set_key_ertr::future; + using omap_set_key_ret = omap_set_key_ertr::future<>; virtual omap_set_key_ret omap_set_key(omap_root_t &omap_root, Transaction &t, const std::string &key, const std::string &value) = 0; @@ -97,10 +81,9 @@ public: * @param omap_root_t &omap_root, omap btree root information * @param Transaction &t, current transaction * @param string &key, omap string key - * @retval remove success return true, else return false. */ using omap_rm_key_ertr = base_ertr; - using omap_rm_key_ret = omap_rm_key_ertr::future; + using omap_rm_key_ret = omap_rm_key_ertr::future<>; virtual omap_rm_key_ret omap_rm_key(omap_root_t &omap_root, Transaction &t, const std::string &key) = 0; 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 2d0892bd706..a28bb009287 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 @@ -37,19 +37,21 @@ BtreeOMapManager::initialize_omap(Transaction &t) } BtreeOMapManager::get_root_ret -BtreeOMapManager::get_omap_root(const omap_root_t &omap_root, Transaction &t) +BtreeOMapManager::get_omap_root(omap_context_t oc, const omap_root_t &omap_root) { - assert(omap_root.omap_root_laddr != L_ADDR_NULL); - laddr_t laddr = omap_root.omap_root_laddr; - return omap_load_extent(get_omap_context(t), laddr, omap_root.depth); + assert(omap_root.get_location() != L_ADDR_NULL); + laddr_t laddr = omap_root.get_location(); + return omap_load_extent(oc, laddr, omap_root.get_depth()); } BtreeOMapManager::handle_root_split_ret -BtreeOMapManager::handle_root_split(omap_root_t &omap_root, omap_context_t oc, - OMapNode::mutation_result_t mresult) +BtreeOMapManager::handle_root_split( + omap_context_t oc, + omap_root_t &omap_root, + OMapNode::mutation_result_t mresult) { return oc.tm.alloc_extent(oc.t, L_ADDR_MIN, OMAP_BLOCK_SIZE) - .safe_then([&omap_root, mresult](auto&& nroot) { + .safe_then([&omap_root, mresult](auto&& nroot) -> handle_root_split_ret { auto [left, right, pivot] = *(mresult.split_tuple); omap_node_meta_t meta{omap_root.depth + 1}; nroot->set_meta(meta); @@ -57,25 +59,25 @@ BtreeOMapManager::handle_root_split(omap_root_t &omap_root, omap_context_t oc, "", nroot->maybe_get_delta_buffer()); nroot->journal_inner_insert(nroot->iter_begin() + 1, right->get_laddr(), pivot, nroot->maybe_get_delta_buffer()); - omap_root.omap_root_laddr = nroot->get_laddr(); - omap_root.depth += 1; - omap_root.state = omap_root_state_t::MUTATED; - return handle_root_split_ertr::make_ready_future(true); + omap_root.update(nroot->get_laddr(), omap_root.depth += 1); + return seastar::now(); }); } BtreeOMapManager::handle_root_merge_ret -BtreeOMapManager::handle_root_merge(omap_root_t &omap_root, omap_context_t oc, - OMapNode::mutation_result_t mresult) +BtreeOMapManager::handle_root_merge( + omap_context_t oc, + omap_root_t &omap_root, + OMapNode::mutation_result_t mresult) { auto root = *(mresult.need_merge); auto iter = root->cast()->iter_begin(); - omap_root.omap_root_laddr = iter->get_node_key().laddr; - omap_root.depth -= 1; - omap_root.state = omap_root_state_t::MUTATED; + omap_root.update( + iter->get_node_key().laddr, + omap_root.depth -= 1); return oc.tm.dec_ref(oc.t, root->get_laddr() - ).safe_then([] (auto &&ret) { - return handle_root_merge_ertr::make_ready_future(true); + ).safe_then([](auto &&ret) -> handle_root_merge_ret { + return seastar::now(); }).handle_error( handle_root_merge_ertr::pass_further{}, crimson::ct_error::assert_all{ @@ -84,13 +86,15 @@ BtreeOMapManager::handle_root_merge(omap_root_t &omap_root, omap_context_t oc, ); } - BtreeOMapManager::omap_get_value_ret BtreeOMapManager::omap_get_value(const omap_root_t &omap_root, Transaction &t, const std::string &key) { logger().debug("{}: {}", __func__, key); - return get_omap_root(omap_root, t).safe_then([this, &t, &key](auto&& extent) { + return get_omap_root( + get_omap_context(t), + omap_root + ).safe_then([this, &t, &key](auto&& extent) { return extent->get_value(get_omap_context(t), key); }).safe_then([](auto &&e) { logger().debug("{}: {} -> {}", __func__, e.first, e.second); @@ -105,15 +109,18 @@ BtreeOMapManager::omap_set_key(omap_root_t &omap_root, Transaction &t, const std::string &key, const std::string &value) { logger().debug("{}: {} -> {}", __func__, key, value); - return get_omap_root(omap_root, t).safe_then([this, &t, &key, &value](auto root) { + return get_omap_root( + get_omap_context(t), + omap_root + ).safe_then([this, &t, &key, &value](auto root) { return root->insert(get_omap_context(t), key, value); - }).safe_then([this, &omap_root, &t](auto mresult) { + }).safe_then([this, &omap_root, &t](auto mresult) -> omap_set_key_ret { if (mresult.status == mutation_status_t::SUCCESS) - return omap_set_key_ertr::make_ready_future(true); + return seastar::now(); else if (mresult.status == mutation_status_t::WAS_SPLIT) - return handle_root_split(omap_root, get_omap_context(t), mresult); + return handle_root_split(get_omap_context(t), omap_root, mresult); else - return omap_set_key_ertr::make_ready_future(false); + return seastar::now(); }); } @@ -121,22 +128,26 @@ BtreeOMapManager::omap_rm_key_ret BtreeOMapManager::omap_rm_key(omap_root_t &omap_root, Transaction &t, const std::string &key) { logger().debug("{}: {}", __func__, key); - return get_omap_root(omap_root, t).safe_then([this, &t, &key](auto root) { + return get_omap_root( + get_omap_context(t), + omap_root + ).safe_then([this, &t, &key](auto root) { return root->rm_key(get_omap_context(t), key); - }).safe_then([this, &omap_root, &t](auto mresult) { - if (mresult.status == mutation_status_t::SUCCESS) - return omap_rm_key_ertr::make_ready_future(true); - else if (mresult.status == mutation_status_t::WAS_SPLIT) - return handle_root_split(omap_root, get_omap_context(t), mresult); - else if (mresult.status == mutation_status_t::NEED_MERGE) { + }).safe_then([this, &omap_root, &t](auto mresult) -> omap_rm_key_ret { + if (mresult.status == mutation_status_t::SUCCESS) { + return seastar::now(); + } else if (mresult.status == mutation_status_t::WAS_SPLIT) { + return handle_root_split(get_omap_context(t), omap_root, mresult); + } else if (mresult.status == mutation_status_t::NEED_MERGE) { auto root = *(mresult.need_merge); - if (root->get_node_size() == 1 && omap_root.depth != 1) - return handle_root_merge(omap_root, get_omap_context(t), mresult); - else - return omap_rm_key_ertr::make_ready_future(true); + if (root->get_node_size() == 1 && omap_root.depth != 1) { + return handle_root_merge(get_omap_context(t), omap_root, mresult); + } else { + return seastar::now(); + } + } else { + return seastar::now(); } - else - return omap_rm_key_ertr::make_ready_future(false); }); } @@ -146,7 +157,10 @@ BtreeOMapManager::omap_list_keys(const omap_root_t &omap_root, Transaction &t, std::string &start, size_t max_result_size) { logger().debug("{}", __func__); - return get_omap_root(omap_root, t).safe_then([this, &t, &start, + return get_omap_root( + get_omap_context(t), + omap_root + ).safe_then([this, &t, &start, max_result_size] (auto extent) { return extent->list_keys(get_omap_context(t), start, max_result_size) .safe_then([](auto &&result) { @@ -163,7 +177,10 @@ BtreeOMapManager::omap_list(const omap_root_t &omap_root, Transaction &t, std::string &start, size_t max_result_size) { logger().debug("{}", __func__); - return get_omap_root(omap_root, t).safe_then([this, &t, &start, max_result_size] + return get_omap_root( + get_omap_context(t), + omap_root + ).safe_then([this, &t, &start, max_result_size] (auto extent) { return extent->list(get_omap_context(t), start, max_result_size) .safe_then([](auto &&result) { @@ -178,13 +195,18 @@ BtreeOMapManager::omap_clear_ret BtreeOMapManager::omap_clear(omap_root_t &omap_root, Transaction &t) { logger().debug("{}", __func__); - return get_omap_root(omap_root, t).safe_then([this, &t](auto extent) { + return get_omap_root( + get_omap_context(t), + omap_root + ).safe_then([this, &t](auto extent) { return extent->clear(get_omap_context(t)); }).safe_then([this, &omap_root, &t] { - return tm.dec_ref(t, omap_root.omap_root_laddr).safe_then([&omap_root] (auto ret) { - omap_root.state = omap_root_state_t::MUTATED; - omap_root.depth = 0; - omap_root.omap_root_laddr = L_ADDR_NULL; + return tm.dec_ref( + t, omap_root.get_location() + ).safe_then([&omap_root] (auto ret) { + omap_root.update( + L_ADDR_NULL, + 0); return omap_clear_ertr::now(); }); }).handle_error( 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 00e5410061f..131ccdd5ddb 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 @@ -25,7 +25,8 @@ namespace crimson::os::seastore::omap_manager { class BtreeOMapManager : public OMapManager { TransactionManager &tm; - omap_context_t get_omap_context(Transaction &t) { + omap_context_t get_omap_context( + Transaction &t) { return omap_context_t{tm, t}; } @@ -35,25 +36,31 @@ class BtreeOMapManager : public OMapManager { */ using get_root_ertr = base_ertr; using get_root_ret = get_root_ertr::future; - get_root_ret get_omap_root(const omap_root_t &omap_root, Transaction &t); + get_root_ret get_omap_root( + omap_context_t c, + const omap_root_t &omap_root); /* handle_root_split * - * root has been splitted and need update omap_root_t + * root has been split and needs to update omap_root_t */ using handle_root_split_ertr = base_ertr; - using handle_root_split_ret = handle_root_split_ertr::future; - handle_root_split_ret handle_root_split(omap_root_t &omap_root, omap_context_t oc, - OMapNode:: mutation_result_t mresult); + using handle_root_split_ret = handle_root_split_ertr::future<>; + handle_root_split_ret handle_root_split( + omap_context_t c, + omap_root_t &omap_root, + OMapNode::mutation_result_t mresult); /* handle_root_merge * * root node has only one item and it is not leaf node, need remove a layer */ using handle_root_merge_ertr = base_ertr; - using handle_root_merge_ret = handle_root_merge_ertr::future; - handle_root_merge_ret handle_root_merge(omap_root_t &omap_root, omap_context_t oc, - OMapNode:: mutation_result_t mresult); + using handle_root_merge_ret = handle_root_merge_ertr::future<>; + handle_root_merge_ret handle_root_merge( + omap_context_t oc, + omap_root_t &omap_root, + OMapNode:: mutation_result_t mresult); public: explicit BtreeOMapManager(TransactionManager &tm); diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index cfc6bf414f7..6369ff0a8d7 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -368,6 +368,68 @@ struct record_t { std::vector deltas; }; +struct omap_root_t { + laddr_t addr = L_ADDR_NULL; + depth_t depth = 0; + bool mutated = false; + + omap_root_t(laddr_t addr, depth_t depth) + : addr(addr), + depth(depth) {} + + omap_root_t(const omap_root_t &o) = default; + omap_root_t(omap_root_t &&o) = default; + omap_root_t &operator=(const omap_root_t &o) = default; + omap_root_t &operator=(omap_root_t &&o) = default; + + bool is_null() const { + return addr == L_ADDR_NULL; + } + + bool must_update() const { + return mutated; + } + + void update(laddr_t _addr, depth_t _depth) { + mutated = true; + addr = _addr; + depth = _depth; + } + + laddr_t get_location() const { + return addr; + } + + depth_t get_depth() const { + return depth; + } +}; + +class __attribute__((packed)) omap_root_le_t { + laddr_le_t addr = laddr_le_t(L_ADDR_NULL); + depth_le_t depth = init_depth_le(0); + +public: + omap_root_le_t() = default; + + omap_root_le_t(laddr_t addr, depth_t depth) + : addr(addr), depth(init_depth_le(depth)) {} + + omap_root_le_t(const omap_root_le_t &o) = default; + omap_root_le_t(omap_root_le_t &&o) = default; + omap_root_le_t &operator=(const omap_root_le_t &o) = default; + omap_root_le_t &operator=(omap_root_le_t &&o) = default; + + void update(const omap_root_t &nroot) { + addr = nroot.get_location(); + depth = init_depth_le(nroot.get_depth()); + } + + omap_root_t get() const { + return omap_root_t(addr, depth); + } +}; + /** * lba_root_t */ diff --git a/src/test/crimson/seastore/test_omap_manager.cc b/src/test/crimson/seastore/test_omap_manager.cc index 656d9206280..ba9dd002206 100644 --- a/src/test/crimson/seastore/test_omap_manager.cc +++ b/src/test/crimson/seastore/test_omap_manager.cc @@ -48,15 +48,13 @@ struct omap_manager_test_t : using test_omap_t = std::map; test_omap_t test_omap_mappings; - bool set_key( + void set_key( omap_root_t &omap_root, Transaction &t, string &key, string &val) { - auto ret = omap_manager->omap_set_key(omap_root, t, key, val).unsafe_get0(); - EXPECT_EQ(ret, true); + omap_manager->omap_set_key(omap_root, t, key, val).unsafe_get0(); test_omap_mappings[key] = val; - return ret; } std::pair get_value( @@ -68,14 +66,12 @@ struct omap_manager_test_t : return ret; } - bool rm_key( + void rm_key( omap_root_t &omap_root, Transaction &t, const string &key) { - auto ret = omap_manager->omap_rm_key(omap_root, t, key).unsafe_get0(); - EXPECT_EQ(ret, true); + omap_manager->omap_rm_key(omap_root, t, key).unsafe_get0(); test_omap_mappings.erase(test_omap_mappings.find(key)); - return ret; } list_keys_result_t list_keys( @@ -145,7 +141,7 @@ struct omap_manager_test_t : omap_root_t &omap_root, Transaction &t) { omap_manager->omap_clear(omap_root, t).unsafe_get0(); - EXPECT_EQ(omap_root.omap_root_laddr, L_ADDR_NULL); + EXPECT_EQ(omap_root.get_location(), L_ADDR_NULL); } void check_mappings(omap_root_t &omap_root, Transaction &t) { @@ -192,7 +188,7 @@ char* rand_string(char* str, const int len) TEST_F(omap_manager_test_t, basic) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -204,7 +200,7 @@ TEST_F(omap_manager_test_t, basic) { auto t = tm->create_transaction(); logger().debug("first transaction"); - [[maybe_unused]] auto setret = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); [[maybe_unused]] auto getret = get_value(omap_root, *t, key); tm->submit_transaction(std::move(t)).unsafe_get(); } @@ -212,7 +208,7 @@ TEST_F(omap_manager_test_t, basic) auto t = tm->create_transaction(); logger().debug("second transaction"); [[maybe_unused]] auto getret = get_value(omap_root, *t, key); - [[maybe_unused]] auto rmret = rm_key(omap_root, *t, key); + rm_key(omap_root, *t, key); [[maybe_unused]] auto getret2 = get_value(omap_root, *t, key); EXPECT_EQ(getret2.second, ""); tm->submit_transaction(std::move(t)).unsafe_get(); @@ -230,7 +226,7 @@ TEST_F(omap_manager_test_t, basic) TEST_F(omap_manager_test_t, force_leafnode_split) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -244,7 +240,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split) for (unsigned j = 0; j < 10; ++j) { string key(rand_string(str, rand() % STR_LEN)); string val(rand_string(str, rand() % STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); if ((i % 20 == 0) && (j == 5)) { check_mappings(omap_root, *t); } @@ -259,7 +255,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split) TEST_F(omap_manager_test_t, force_leafnode_split_merge) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -274,7 +270,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge) for (unsigned j = 0; j < 5; ++j) { string key(rand_string(str, rand() % STR_LEN)); string val(rand_string(str, rand() % STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); if ((i % 10 == 0) && (j == 3)) { check_mappings(omap_root, *t); } @@ -289,7 +285,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge) int i = 0; for (auto &e: test_omap_mappings) { if (i % 3 != 0) { - [[maybe_unused]] auto rmref= rm_key(omap_root, *t, e.first); + rm_key(omap_root, *t, e.first); } if (i % 10 == 0) { @@ -312,7 +308,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge) TEST_F(omap_manager_test_t, force_leafnode_split_merge_fullandbalanced) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -327,7 +323,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge_fullandbalanced) for (unsigned j = 0; j < 5; ++j) { string key(rand_string(str, rand() % STR_LEN)); string val(rand_string(str, rand() % STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); if ((i % 10 == 0) && (j == 3)) { check_mappings(omap_root, *t); } @@ -343,7 +339,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge_fullandbalanced) for (auto &e: test_omap_mappings) { if (30 < i && i < 100) { auto val = e; - [[maybe_unused]] auto rmref= rm_key(omap_root, *t, e.first); + rm_key(omap_root, *t, e.first); } if (i % 10 == 0) { @@ -370,7 +366,7 @@ TEST_F(omap_manager_test_t, force_leafnode_split_merge_fullandbalanced) TEST_F(omap_manager_test_t, force_split_listkeys_list_clear) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -385,7 +381,7 @@ TEST_F(omap_manager_test_t, force_split_listkeys_list_clear) for (unsigned j = 0; j < 10; ++j) { string key(rand_string(str, rand() % STR_LEN)); string val(rand_string(str, rand() % STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); if (i == 10) temp = key; if ((i % 20 == 0) && (j == 5)) { @@ -423,7 +419,7 @@ TEST_F(omap_manager_test_t, force_split_listkeys_list_clear) TEST_F(omap_manager_test_t, internal_force_split) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -438,7 +434,7 @@ TEST_F(omap_manager_test_t, internal_force_split) for (unsigned j = 0; j < 80; ++j) { string key(rand_string(str, rand() % STR_LEN)); string val(rand_string(str, rand() % STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); if ((i % 2 == 0) && (j % 50 == 0)) { check_mappings(omap_root, *t); } @@ -453,7 +449,7 @@ TEST_F(omap_manager_test_t, internal_force_split) TEST_F(omap_manager_test_t, internal_force_merge_fullandbalanced) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -469,7 +465,7 @@ TEST_F(omap_manager_test_t, internal_force_merge_fullandbalanced) for (unsigned j = 0; j < 80; ++j) { string key(rand_string(str, rand() % STR_LEN)); string val(rand_string(str, rand() % STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); if ((i % 2 == 0) && (j % 50 == 0)) { check_mappings(omap_root, *t); } @@ -481,7 +477,7 @@ TEST_F(omap_manager_test_t, internal_force_merge_fullandbalanced) int i = 0; for (auto &e: test_omap_mappings) { auto val = e; - [[maybe_unused]] auto rmref= rm_key(omap_root, *t, e.first); + rm_key(omap_root, *t, e.first); if (i % 10 == 0) { logger().debug("submitting transaction i= {}", i); @@ -504,7 +500,7 @@ TEST_F(omap_manager_test_t, internal_force_merge_fullandbalanced) TEST_F(omap_manager_test_t, replay) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -521,7 +517,7 @@ TEST_F(omap_manager_test_t, replay) for (unsigned j = 0; j < 80; ++j) { string key(rand_string(str, rand() % STR_LEN)); string val(rand_string(str, rand() % STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); if ((i % 2 == 0) && (j % 50 == 0)) { check_mappings(omap_root, *t); } @@ -536,7 +532,7 @@ TEST_F(omap_manager_test_t, replay) int i = 0; for (auto &e: test_omap_mappings) { auto val = e; - [[maybe_unused]] auto rmref= rm_key(omap_root, *t, e.first); + rm_key(omap_root, *t, e.first); if (i % 10 == 0) { logger().debug("submitting transaction i= {}", i); @@ -562,7 +558,7 @@ TEST_F(omap_manager_test_t, replay) TEST_F(omap_manager_test_t, internal_force_split_to_root) { run_async([this] { - omap_root_t omap_root(0, L_ADDR_NULL); + omap_root_t omap_root(L_ADDR_NULL, 0); { auto t = tm->create_transaction(); omap_root = omap_manager->initialize_omap(*t).unsafe_get0(); @@ -578,7 +574,7 @@ TEST_F(omap_manager_test_t, internal_force_split_to_root) for (unsigned j = 0; j < 8; ++j) { string key(rand_string(str, STR_LEN)); string val(rand_string(str, STR_LEN)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); } logger().debug("submitting transaction i = {}", i); tm->submit_transaction(std::move(t)).unsafe_get(); @@ -592,7 +588,7 @@ TEST_F(omap_manager_test_t, internal_force_split_to_root) for (unsigned j = 0; j < 8; ++j) { string key(rand_string(str_2, STR_LEN_2)); string val(rand_string(str_2, STR_LEN_2)); - [[maybe_unused]] auto addref = set_key(omap_root, *t, key, val); + set_key(omap_root, *t, key, val); } logger().debug("submitting transaction last"); tm->submit_transaction(std::move(t)).unsafe_get(); -- 2.39.5