root_leaf->set_meta(meta);
root_leaf->pin.set_range(meta);
get_tree_stats<self_type>(c.trans).depth = 1u;
+ get_tree_stats<self_type>(c.trans).extents_num_delta++;
return phy_tree_root_t{root_leaf->get_paddr(), 1u};
}
if (t.onode_tree_stats.depth) {
stats.onode_tree_depth = t.onode_tree_stats.depth;
}
+ if (t.omap_tree_stats.depth) {
+ stats.omap_tree_depth = t.omap_tree_stats.depth;
+ }
+ stats.onode_tree_extents_num += t.onode_tree_stats.extents_num_delta;
+ ceph_assert(stats.onode_tree_extents_num >= 0);
get_by_src(stats.committed_onode_tree_efforts, trans_src
).increment(t.onode_tree_stats);
+ stats.omap_tree_extents_num += t.omap_tree_stats.extents_num_delta;
+ ceph_assert(stats.omap_tree_extents_num >= 0);
get_by_src(stats.committed_omap_tree_efforts, trans_src
).increment(t.omap_tree_stats);
}
logger().debug("{}", __func__);
return tm.alloc_extent<OMapLeafNode>(t, hint, OMAP_LEAF_BLOCK_SIZE)
- .si_then([hint](auto&& root_extent) {
+ .si_then([hint, &t](auto&& root_extent) {
root_extent->set_size(0);
omap_node_meta_t meta{1};
root_extent->set_meta(meta);
omap_root_t omap_root;
omap_root.update(root_extent->get_laddr(), 1, hint);
+ t.get_omap_tree_stats().depth = 1u;
+ t.get_omap_tree_stats().extents_num_delta++;
return initialize_omap_iertr::make_ready_future<omap_root_t>(omap_root);
});
}
{
return oc.tm.alloc_extent<OMapInnerNode>(oc.t, omap_root.hint,
OMAP_INNER_BLOCK_SIZE)
- .si_then([&omap_root, mresult](auto&& nroot) -> handle_root_split_ret {
+ .si_then([&omap_root, mresult, oc](auto&& nroot) -> handle_root_split_ret {
auto [left, right, pivot] = *(mresult.split_tuple);
omap_node_meta_t meta{omap_root.depth + 1};
nroot->set_meta(meta);
nroot->journal_inner_insert(nroot->iter_begin() + 1, right->get_laddr(),
pivot, nroot->maybe_get_delta_buffer());
omap_root.update(nroot->get_laddr(), omap_root.get_depth() + 1, omap_root.hint);
+ oc.t.get_omap_tree_stats().depth = omap_root.depth;
+ ++(oc.t.get_omap_tree_stats().extents_num_delta);
return seastar::now();
});
}
iter->get_val(),
omap_root.depth -= 1,
omap_root.hint);
+ oc.t.get_omap_tree_stats().depth = omap_root.depth;
+ oc.t.get_omap_tree_stats().extents_num_delta--;
return oc.tm.dec_ref(oc.t, root->get_laddr()
).si_then([](auto &&ret) -> handle_root_merge_ret {
return seastar::now();
right->journal_inner_insert(riter, laddr, key,
right->maybe_get_delta_buffer());
}
+ ++(oc.t.get_omap_tree_stats().extents_num_delta);
return make_split_insert_ret(
interruptible::ready_future_marker{},
mutation_result_t(mutation_status_t::WAS_SPLIT, tuple, std::nullopt));
journal_inner_remove(riter, maybe_get_delta_buffer());
//retire extent
std::vector<laddr_t> dec_laddrs {l->get_laddr(), r->get_laddr()};
- return dec_ref(oc, dec_laddrs).si_then([this] {
+ return dec_ref(oc, dec_laddrs).si_then([this, oc] {
+ --(oc.t.get_omap_tree_stats().extents_num_delta);
if (extent_is_below_min()) {
return merge_entry_ret(
interruptible::ready_future_marker{},
right->journal_leaf_insert(mut_iter, key, value, right->maybe_get_delta_buffer());
}
}
+ ++(oc.t.get_omap_tree_stats().extents_num_delta);
return dec_ref(oc, get_laddr())
.si_then([tuple = std::move(tuple)] {
return insert_ret(
LOG_PREFIX(OTree::Node::mkfs);
return LeafNode::allocate_root(c, root_tracker
).si_then([c, FNAME](auto ret) {
+ c.t.get_onode_tree_stats().extents_num_delta++;
INFOT("allocated root {}", c.t, ret->get_name());
});
}
search_position_t left_last_pos = left_for_merge->impl->merge(
left_mut, *right_for_merge->impl, merge_stage, merge_size);
left_for_merge->track_merge(right_for_merge, merge_stage, left_last_pos);
+ --(c.t.get_onode_tree_stats().extents_num_delta);
return left_for_merge->parent_info().ptr->apply_children_merge(
c, std::move(left_for_merge), left_addr,
std::move(right_for_merge), update_index_after_merge);
fresh_node.mut.copy_in_absolute(
const_cast<laddr_packed_t*>(p_value), old_root_addr);
root->make_root_from(c, std::move(super), old_root_addr);
+ ++(c.t.get_onode_tree_stats().extents_num_delta);
return root;
});
}
child->deref_parent();
auto super_to_move = deref_super();
child->make_root_from(c, std::move(super_to_move), impl->laddr());
+ --(c.t.get_onode_tree_stats().extents_num_delta);
return retire(c, std::move(this_ref));
});
}
validate_tracked_children();
right_node->validate_tracked_children();
}
+ ++(c.t.get_onode_tree_stats().extents_num_delta);
return right_node;
});
}
validate_tracked_cursors();
right_node->validate_tracked_cursors();
+ ++(c.t.get_onode_tree_stats().extents_num_delta);
return apply_split_to_parent(
c, std::move(this_ref), std::move(right_node), false
).si_then([ret] {