From ba5c0fa7f14a7fb01edb0669314b799353977596 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Wed, 24 Feb 2021 13:28:10 +0800 Subject: [PATCH] crimson/onode-staged-tree: fix Cursor operator== Signed-off-by: Yingxin Cheng --- .../os/seastore/onode_manager/staged-fltree/tree.h | 4 ++-- .../onode_manager/staged-fltree/tree_utils.h | 7 ++++--- .../seastore/onode_tree/test_staged_fltree.cc | 12 ++++++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/tree.h b/src/crimson/os/seastore/onode_manager/staged-fltree/tree.h index f4c1d5f966d..d722cfc05f3 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/tree.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/tree.h @@ -93,8 +93,8 @@ class Btree { bool operator>=(const Cursor& o) const { return (int)compare_to(o) >= 0; } bool operator<(const Cursor& o) const { return (int)compare_to(o) < 0; } bool operator<=(const Cursor& o) const { return (int)compare_to(o) <= 0; } - bool operator==(const Cursor& o) const { return (int)compare_to(o) != 0; } - bool operator!=(const Cursor& o) const { return (int)compare_to(o) == 0; } + bool operator==(const Cursor& o) const { return (int)compare_to(o) == 0; } + bool operator!=(const Cursor& o) const { return (int)compare_to(o) != 0; } btree_future get_next(Transaction& t) { assert(!is_end()); diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/tree_utils.h b/src/crimson/os/seastore/onode_manager/staged-fltree/tree_utils.h index 08dc555bc3e..867d3dfe33a 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/tree_utils.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/tree_utils.h @@ -285,8 +285,9 @@ class TreeBuilder { #ifndef NDEBUG auto [key, value] = kv_iter.get_kv(); Values::validate_cursor(cursor, key, value); - return tree->lower_bound(t, key + return tree->find(t, key ).safe_then([this, cursor](auto cursor_) mutable { + assert(!cursor_.is_end()); auto [key, value] = kv_iter.get_kv(); ceph_assert(cursor_.get_ghobj() == key); ceph_assert(cursor_.value() == cursor.value()); @@ -315,7 +316,7 @@ class TreeBuilder { assert(c_iter != cursors->end()); auto [k, v] = kv_iter.get_kv(); // validate values in tree keep intact - return tree->lower_bound(t, k).safe_then([this, &c_iter](auto cursor) { + return tree->find(t, k).safe_then([this, &c_iter](auto cursor) { auto [k, v] = kv_iter.get_kv(); Values::validate_cursor(cursor, k, v); // validate values in cursors keep intact @@ -349,7 +350,7 @@ class TreeBuilder { auto iter = kvs.begin(); while (!iter.is_end()) { auto [k, v] = iter.get_kv(); - auto cursor = tree->lower_bound(t, k).unsafe_get0(); + auto cursor = tree->find(t, k).unsafe_get0(); Values::validate_cursor(cursor, k, v); ++iter; } diff --git a/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc b/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc index 2366a6e4dc0..365ef60a3a9 100644 --- a/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc +++ b/src/test/crimson/seastore/onode_tree/test_staged_fltree.cc @@ -216,7 +216,8 @@ TEST_F(b_dummy_tree_test_t, 3_random_insert_leaf_node) ceph_assert(cursor.get_ghobj() == key); Values::initialize_cursor(t, cursor, value); insert_history.emplace_back(key, value, cursor); - auto cursor_ = tree.lower_bound(t, key).unsafe_get0(); + auto cursor_ = tree.find(t, key).unsafe_get0(); + ceph_assert(cursor_ != tree.end()); ceph_assert(cursor_.value() == cursor.value()); Values::validate_cursor(cursor_, key, value); return cursor.value(); @@ -327,7 +328,8 @@ TEST_F(b_dummy_tree_test_t, 3_random_insert_leaf_node) for (auto& [k, v, c] : insert_history) { // validate values in tree keep intact - auto cursor = tree.lower_bound(t, k).unsafe_get0(); + auto cursor = tree.find(t, k).unsafe_get0(); + EXPECT_NE(cursor, tree.end()); Values::validate_cursor(cursor, k, v); // validate values in cursors keep intact Values::validate_cursor(c, k, v); @@ -472,10 +474,12 @@ class TestTree { EXPECT_EQ(tree_clone.height(t_clone).unsafe_get0(), 2); for (auto& [k, v, c] : insert_history) { - auto result = tree_clone.lower_bound(t_clone, k).unsafe_get0(); + auto result = tree_clone.find(t_clone, k).unsafe_get0(); + EXPECT_NE(result, tree_clone.end()); Values::validate_cursor(result, k, v); } - auto result = tree_clone.lower_bound(t_clone, key).unsafe_get0(); + auto result = tree_clone.find(t_clone, key).unsafe_get0(); + EXPECT_NE(result, tree_clone.end()); Values::validate_cursor(result, key, value); EXPECT_TRUE(last_split.match(expected)); }); -- 2.39.5