Skip to content

Commit a80c4d4

Browse files
zhscnMatan-B
authored andcommitted
crimson/os/seastore/FixedKVBtree: return BtreeCursor instead of BtreeMapping
Signed-off-by: Zhang Song <[email protected]> (cherry picked from commit 84cb3d8)
1 parent 4a8aecc commit a80c4d4

File tree

4 files changed

+13
-20
lines changed

4 files changed

+13
-20
lines changed

src/crimson/os/seastore/backref/btree_backref_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ constexpr size_t BACKREF_BLOCK_SIZE = 4096;
3131

3232
using BackrefBtree = FixedKVBtree<
3333
paddr_t, backref_map_val_t, BackrefInternalNode,
34-
BackrefLeafNode, BtreeBackrefMapping, BACKREF_BLOCK_SIZE>;
34+
BackrefLeafNode, BackrefCursor, BACKREF_BLOCK_SIZE>;
3535

3636
class BtreeBackrefManager : public BackrefManager {
3737
public:

src/crimson/os/seastore/btree/fixed_kv_btree.h

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ template <
3737
typename node_val_t,
3838
typename internal_node_t,
3939
typename leaf_node_t,
40-
typename pin_t,
40+
typename cursor_t,
4141
size_t node_size>
4242
class FixedKVBtree {
4343
static constexpr size_t MAX_DEPTH = 16;
@@ -46,7 +46,7 @@ class FixedKVBtree {
4646
node_val_t,
4747
internal_node_t,
4848
leaf_node_t,
49-
pin_t,
49+
cursor_t,
5050
node_size>;
5151
public:
5252
using InternalNodeRef = TCachedExtentRef<internal_node_t>;
@@ -201,22 +201,15 @@ class FixedKVBtree {
201201
return leaf.pos == 0;
202202
}
203203

204-
std::unique_ptr<pin_t> get_pin(op_context_t ctx) const {
204+
std::unique_ptr<cursor_t> get_cursor(op_context_t ctx) const {
205205
assert(!is_end());
206-
auto val = get_val();
207-
auto key = get_key();
208-
node_key_t end{};
209-
if constexpr (std::is_same_v<node_key_t, laddr_t>) {
210-
end = (key + val.len).checked_to_laddr();
211-
} else {
212-
end = key + val.len;
213-
}
214-
return std::make_unique<pin_t>(
206+
return std::make_unique<cursor_t>(
215207
ctx,
216208
leaf.node,
217-
leaf.pos,
218-
val,
219-
fixed_kv_node_meta_t<node_key_t>{ key, end, 0 });
209+
leaf.node->modifications,
210+
get_key(),
211+
std::make_optional(get_val()),
212+
leaf.pos);
220213
}
221214

222215
typename leaf_node_t::Ref get_leaf_node() {
@@ -2144,15 +2137,15 @@ template <
21442137
typename node_val_t,
21452138
typename internal_node_t,
21462139
typename leaf_node_t,
2147-
typename pin_t,
2140+
typename cursor_t,
21482141
size_t node_size>
21492142
struct is_fixed_kv_tree<
21502143
FixedKVBtree<
21512144
node_key_t,
21522145
node_val_t,
21532146
internal_node_t,
21542147
leaf_node_t,
2155-
pin_t,
2148+
cursor_t,
21562149
node_size>> : std::true_type {};
21572150

21582151
template <

src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ _init_cached_extent(
483483
iter.get_val().pladdr.get_paddr() == logn->get_paddr()) {
484484
assert(!iter.get_leaf_node()->is_pending());
485485
iter.get_leaf_node()->link_child(logn.get(), iter.get_leaf_pos());
486-
logn->set_laddr(iter.get_pin(c)->get_key());
486+
logn->set_laddr(iter.get_key());
487487
ceph_assert(iter.get_val().len == e->get_length());
488488
DEBUGT("logical extent {} live", c.trans, *logn);
489489
ret = true;

src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ using BtreeLBAMappingRef = std::unique_ptr<BtreeLBAMapping>;
231231

232232
using LBABtree = FixedKVBtree<
233233
laddr_t, lba_map_val_t, LBAInternalNode,
234-
LBALeafNode, BtreeLBAMapping, LBA_BLOCK_SIZE>;
234+
LBALeafNode, LBACursor, LBA_BLOCK_SIZE>;
235235

236236
/**
237237
* BtreeLBAManager

0 commit comments

Comments
 (0)