From a964600652b3e10615ae8d3458eadaf6dad3a8f1 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 20 Aug 2022 14:50:19 +0800 Subject: [PATCH] crimson/os: avoid using KeyT in ns_oid_view_t so we don't need to use it when instantiating the template member functions of this class. Signed-off-by: Kefu Chai --- .../stages/item_iterator_stage.cc | 4 +-- .../stages/item_iterator_stage.h | 2 +- .../staged-fltree/stages/key_layout.h | 29 ++++++++++--------- .../staged-fltree/stages/node_stage.h | 2 +- .../staged-fltree/stages/node_stage_layout.h | 2 +- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.cc b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.cc index 85c05e3cb12..165d61a96a9 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.cc +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.cc @@ -37,7 +37,7 @@ memory_range_t ITER_T::insert_prefix( p_insert -= sizeof(node_offset_t); node_offset_t back_offset = (p_insert - p_insert_front); mut.copy_in_absolute(p_insert, back_offset); - ns_oid_view_t::append(mut, key, p_insert); + ns_oid_view_t::append(mut, key, p_insert); return {p_insert_front, p_insert}; } @@ -179,7 +179,7 @@ APPEND_T::open_nxt(const full_key_t& key) { p_append -= sizeof(node_offset_t); p_offset_while_open = p_append; - ns_oid_view_t::append(*p_mut, key, p_append); + ns_oid_view_t::append(*p_mut, key, p_append); return {p_mut, p_append}; } diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.h b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.h index 3cc70752b41..f09c931a314 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/item_iterator_stage.h @@ -129,7 +129,7 @@ class item_iterator_t { template static node_offset_t estimate_insert( const full_key_t& key, const value_input_t&) { - return ns_oid_view_t::estimate_size(key) + sizeof(node_offset_t); + return ns_oid_view_t::estimate_size(key) + sizeof(node_offset_t); } template diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/key_layout.h b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/key_layout.h index 45b46905a17..edcf956d856 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/key_layout.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/key_layout.h @@ -349,12 +349,12 @@ struct ns_oid_view_t { oid.reset_to(origin_base, new_base, node_size); } - template - static node_offset_t estimate_size(const full_key_t& key); + template + static node_offset_t estimate_size(const Key& key); - template + template static void append(NodeExtentMutable&, - const full_key_t& key, + const Key& key, char*& p_append); static void append(NodeExtentMutable& mut, @@ -368,8 +368,8 @@ struct ns_oid_view_t { } } - template - static void test_append(const full_key_t& key, char*& p_append); + template + static void test_append(const Key& key, char*& p_append); string_key_view_t nspace; string_key_view_t oid; @@ -863,9 +863,10 @@ bool operator==(LHS lhs, RHS rhs) { return lhs <=> rhs == 0; } -template -node_offset_t ns_oid_view_t::estimate_size(const full_key_t& key) { - if constexpr (KT == KeyT::VIEW) { +template +node_offset_t ns_oid_view_t::estimate_size(const Key& key) { + static_assert(IsFullKey); + if constexpr (std::same_as) { return key.ns_oid_view().size(); } else { if (key.dedup_type() != Type::STR) { @@ -877,9 +878,10 @@ node_offset_t ns_oid_view_t::estimate_size(const full_key_t& key) { } } -template +template void ns_oid_view_t::append( - NodeExtentMutable& mut, const full_key_t& key, char*& p_append) { + NodeExtentMutable& mut, const Key& key, char*& p_append) { + static_assert(IsFullKey); if (key.dedup_type() == Type::STR) { string_key_view_t::append_str(mut, key.nspace(), p_append); string_key_view_t::append_str(mut, key.oid(), p_append); @@ -888,8 +890,9 @@ void ns_oid_view_t::append( } } -template -void ns_oid_view_t::test_append(const full_key_t& key, char*& p_append) { +template +void ns_oid_view_t::test_append(const Key& key, char*& p_append) { + static_assert(IsFullKey); if (key.dedup_type() == Type::STR) { string_key_view_t::test_append_str(key.nspace(), p_append); string_key_view_t::test_append_str(key.oid(), p_append); diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage.h b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage.h index 9084e954c6b..38a4ef5ccd7 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage.h @@ -138,7 +138,7 @@ class node_extent_t { const full_key_t& key, const value_input_t& value) { auto size = FieldType::estimate_insert_one(); if constexpr (FIELD_TYPE == field_type_t::N2) { - size += ns_oid_view_t::estimate_size(key); + size += ns_oid_view_t::estimate_size(key); } else if constexpr (FIELD_TYPE == field_type_t::N3 && NODE_TYPE == node_type_t::LEAF) { size += value.allocation_size(); diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage_layout.h b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage_layout.h index f65d628fd19..a3a3c69ad21 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage_layout.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage_layout.h @@ -295,7 +295,7 @@ struct node_fields_2_t { template static void append_key( NodeExtentMutable& mut, const full_key_t& key, char*& p_append) { - ns_oid_view_t::append(mut, key, p_append); + ns_oid_view_t::append(mut, key, p_append); } static void append_offset( NodeExtentMutable& mut, node_offset_t offset_to_right, char*& p_append); -- 2.39.5