From 431d69ebd6e6d2a1c6c81a42d41836448e5b2728 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Wed, 2 Jun 2021 11:52:33 +0800 Subject: [PATCH] crimson/onode-staged-tree: introduce compile-time tree_conf_t Signed-off-by: Yingxin Cheng --- .../staged-fltree/fltree_onode_manager.h | 8 ++++---- .../onode_manager/staged-fltree/value.cc | 6 +++--- .../onode_manager/staged-fltree/value.h | 19 ++++++++++++++----- .../crimson/seastore/onode_tree/test_value.h | 7 +++++-- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h b/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h index c580defebc6..fcb26b25b5e 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h @@ -10,7 +10,9 @@ namespace crimson::os::seastore::onode { struct FLTreeOnode final : Onode, Value { - static constexpr value_magic_t HEADER_MAGIC = value_magic_t::ONODE; + static constexpr tree_conf_t TREE_CONF = { + value_magic_t::ONODE + }; enum class status_t { STABLE, @@ -27,13 +29,11 @@ struct FLTreeOnode final : Onode, Value { template FLTreeOnode(T&&... args) : Value(std::forward(args)...) {} - - struct Recorder : public ValueDeltaRecorder { Recorder(bufferlist &bl) : ValueDeltaRecorder(bl) {} value_magic_t get_header_magic() const final { - return value_magic_t::ONODE; + return TREE_CONF.value_magic; } void apply_value_delta( diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/value.cc b/src/crimson/os/seastore/onode_manager/staged-fltree/value.cc index cd4bba0e393..547872fdf09 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/value.cc +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/value.cc @@ -85,12 +85,12 @@ build_value_recorder_by_type(ceph::bufferlist& encoded, { std::unique_ptr ret; switch (magic) { - case value_magic_t::TEST: - ret = std::make_unique(encoded); - break; case value_magic_t::ONODE: ret = std::make_unique(encoded); break; + case value_magic_t::TEST: + ret = std::make_unique(encoded); + break; default: ret = nullptr; break; diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/value.h b/src/crimson/os/seastore/onode_manager/staged-fltree/value.h index 95f675d33ad..bce1424b760 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/value.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/value.h @@ -16,15 +16,15 @@ namespace crimson::os::seastore::onode { // value size up to 64 KiB using value_size_t = uint16_t; enum class value_magic_t : uint8_t { - TEST = 0x52, - ONODE, + ONODE = 0x52, + TEST, }; inline std::ostream& operator<<(std::ostream& os, const value_magic_t& magic) { switch (magic) { - case value_magic_t::TEST: - return os << "TEST"; case value_magic_t::ONODE: return os << "ONODE"; + case value_magic_t::TEST: + return os << "TEST"; default: return os << "UNKNOWN(" << magic << ")"; } @@ -147,6 +147,15 @@ class ValueDeltaRecorder { ceph::bufferlist& encoded; }; +/** + * tree_conf_t + * + * Hard limits and compile-time configurations. + */ +struct tree_conf_t { + value_magic_t value_magic; +}; + class tree_cursor_t; /** * Value @@ -252,7 +261,7 @@ struct ValueBuilder { template struct ValueBuilderImpl final : public ValueBuilder { value_magic_t get_header_magic() const { - return ValueImpl::HEADER_MAGIC; + return ValueImpl::TREE_CONF.value_magic; } std::unique_ptr diff --git a/src/test/crimson/seastore/onode_tree/test_value.h b/src/test/crimson/seastore/onode_tree/test_value.h index b1a828e1f6e..f5aed8a20d3 100644 --- a/src/test/crimson/seastore/onode_tree/test_value.h +++ b/src/test/crimson/seastore/onode_tree/test_value.h @@ -38,7 +38,10 @@ inline std::ostream& operator<<(std::ostream& os, const test_item_t& item) { class TestValue final : public Value { public: - static constexpr auto HEADER_MAGIC = value_magic_t::TEST; + static constexpr tree_conf_t TREE_CONF = { + value_magic_t::TEST + }; + using id_t = test_item_t::id_t; using magic_t = test_item_t::magic_t; struct magic_packed_t { @@ -94,7 +97,7 @@ class TestValue final : public Value { protected: value_magic_t get_header_magic() const override { - return HEADER_MAGIC; + return TREE_CONF.value_magic; } void apply_value_delta(ceph::bufferlist::const_iterator& delta, -- 2.39.5