using BackrefBtree = FixedKVBtree<
paddr_t, backref_map_val_t, BackrefInternalNode,
- BackrefLeafNode, BtreeBackrefMapping, BACKREF_BLOCK_SIZE>;
+ BackrefLeafNode, BackrefCursor, BACKREF_BLOCK_SIZE>;
class BtreeBackrefManager : public BackrefManager {
public:
typename node_val_t,
typename internal_node_t,
typename leaf_node_t,
- typename pin_t,
+ typename cursor_t,
size_t node_size>
class FixedKVBtree {
static constexpr size_t MAX_DEPTH = 16;
node_val_t,
internal_node_t,
leaf_node_t,
- pin_t,
+ cursor_t,
node_size>;
public:
using InternalNodeRef = TCachedExtentRef<internal_node_t>;
return leaf.pos == 0;
}
- std::unique_ptr<pin_t> get_pin(op_context_t ctx) const {
+ std::unique_ptr<cursor_t> get_cursor(op_context_t ctx) const {
assert(!is_end());
- auto val = get_val();
- auto key = get_key();
- node_key_t end{};
- if constexpr (std::is_same_v<node_key_t, laddr_t>) {
- end = (key + val.len).checked_to_laddr();
- } else {
- end = key + val.len;
- }
- return std::make_unique<pin_t>(
+ return std::make_unique<cursor_t>(
ctx,
leaf.node,
- leaf.pos,
- val,
- fixed_kv_node_meta_t<node_key_t>{ key, end, 0 });
+ leaf.node->modifications,
+ get_key(),
+ std::make_optional(get_val()),
+ leaf.pos);
}
typename leaf_node_t::Ref get_leaf_node() {
typename node_val_t,
typename internal_node_t,
typename leaf_node_t,
- typename pin_t,
+ typename cursor_t,
size_t node_size>
struct is_fixed_kv_tree<
FixedKVBtree<
node_val_t,
internal_node_t,
leaf_node_t,
- pin_t,
+ cursor_t,
node_size>> : std::true_type {};
template <
iter.get_val().pladdr.get_paddr() == logn->get_paddr()) {
assert(!iter.get_leaf_node()->is_pending());
iter.get_leaf_node()->link_child(logn.get(), iter.get_leaf_pos());
- logn->set_laddr(iter.get_pin(c)->get_key());
+ logn->set_laddr(iter.get_key());
ceph_assert(iter.get_val().len == e->get_length());
DEBUGT("logical extent {} live", c.trans, *logn);
ret = true;
using LBABtree = FixedKVBtree<
laddr_t, lba_map_val_t, LBAInternalNode,
- LBALeafNode, BtreeLBAMapping, LBA_BLOCK_SIZE>;
+ LBALeafNode, LBACursor, LBA_BLOCK_SIZE>;
/**
* BtreeLBAManager