#include "crimson/os/seastore/logging.h"
-#include "crimson/os/seastore/lba_manager.h"
+#include "crimson/os/seastore/cache.h"
#include "crimson/os/seastore/seastore_types.h"
#include "crimson/os/seastore/btree/btree_range_pin.h"
},
[FNAME, c, addr](const leaf_node_t &leaf) {
auto ret = leaf.lower_bound(addr);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"leaf addr {}, got ret offset {}, size {}, end {}",
c.trans,
addr,
},
visitor
).si_then([FNAME, c](auto &&ret) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"ret.leaf.pos {}",
c.trans,
ret.leaf.pos);
node_val_t val
) {
LOG_PREFIX(FixedKVBtree::insert);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"inserting laddr {} at iter {}",
c.trans,
laddr,
node_val_t val)
{
LOG_PREFIX(FixedKVBtree::update);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"update element at {}",
c.trans,
iter.is_end() ? min_max_t<node_key_t>::max : iter.get_key());
iterator iter)
{
LOG_PREFIX(FixedKVBtree::remove);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"remove element at {}",
c.trans,
iter.is_end() ? min_max_t<node_key_t>::max : iter.get_key());
{
assert(!e->is_logical());
LOG_PREFIX(FixedKVTree::init_cached_extent);
- SUBDEBUGT(seastore_lba_details, "extent {}", c.trans, *e);
+ SUBTRACET(seastore_fixedkv_tree, "extent {}", c.trans, *e);
if (e->get_type() == internal_node_t::TYPE) {
auto eint = e->cast<internal_node_t>();
return lower_bound(
depth_t cand_depth = eint->get_node_meta().depth;
if (cand_depth <= iter.get_depth() &&
&*iter.get_internal(cand_depth).node == &*eint) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent {} is live",
c.trans,
*eint);
return true;
} else {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent {} is not live",
c.trans,
*eint);
// Note, this check is valid even if iter.is_end()
LOG_PREFIX(FixedKVTree::init_cached_extent);
if (iter.leaf.node == &*eleaf) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent {} is live",
c.trans,
*eleaf);
return true;
} else {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent {} is not live",
c.trans,
*eleaf);
}
});
} else {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"found other extent {} type {}",
c.trans,
*e,
c, laddr
).si_then([FNAME, c, addr, laddr, len](auto iter) {
if (iter.leaf.node->get_paddr() == addr) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent laddr {} addr {}~{} found: {}",
c.trans,
laddr,
*iter.leaf.node);
return CachedExtentRef(iter.leaf.node);
} else {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent laddr {} addr {}~{} is not live, does not match node {}",
c.trans,
laddr,
CachedExtent &node = *iter.get_internal(d).node;
auto internal_node = node.cast<internal_node_t>();
if (internal_node->get_paddr() == addr) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent laddr {} addr {}~{} found: {}",
c.trans,
laddr,
return CachedExtentRef(internal_node);
}
}
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"extent laddr {} addr {}~{} is not live, no matching internal node",
c.trans,
laddr,
n_fixed_kv_extent->resolve_relative_addrs(
make_record_relative_paddr(0) - n_fixed_kv_extent->get_paddr());
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"rewriting {} into {}",
c.trans,
fixed_kv_extent,
paddr_t new_addr)
{
LOG_PREFIX(FixedKVBtree::update_internal_mapping);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"updating laddr {} at depth {} from {} to {}",
c.trans,
laddr,
).si_then([=](auto iter) {
assert(iter.get_depth() >= depth);
if (depth == iter.get_depth()) {
- SUBDEBUGT(seastore_lba_details, "update at root", c.trans);
+ SUBTRACET(seastore_fixedkv_tree, "update at root", c.trans);
if (laddr != min_max_t<node_key_t>::min) {
SUBERRORT(
- seastore_lba_details,
+ seastore_fixedkv_tree,
"updating root laddr {} at depth {} from {} to {},"
"laddr is not 0",
c.trans,
if (root.get_location() != old_addr) {
SUBERRORT(
- seastore_lba_details,
+ seastore_fixedkv_tree,
"updating root laddr {} at depth {} from {} to {},"
"root addr {} does not match",
c.trans,
if (piter->get_key() != laddr) {
SUBERRORT(
- seastore_lba_details,
+ seastore_fixedkv_tree,
"updating laddr {} at depth {} from {} to {},"
"node {} pos {} val pivot addr {} does not match",
c.trans,
if (piter->get_val() != old_addr) {
SUBERRORT(
- seastore_lba_details,
+ seastore_fixedkv_tree,
"updating laddr {} at depth {} from {} to {},"
"node {} pos {} val addr {} does not match",
c.trans,
node_key_t end)
{
LOG_PREFIX(FixedKVBtree::get_internal_node);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"reading internal at offset {}, depth {}, begin {}, end {}",
c.trans,
offset,
init_internal
).si_then([FNAME, c, offset, init_internal, depth, begin, end](
typename internal_node_t::Ref ret) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"read internal at offset {} {}",
c.trans,
offset,
node_key_t end)
{
LOG_PREFIX(FixedKVBtree::get_leaf_node);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"reading leaf at offset {}, begin {}, end {}",
c.trans,
offset,
init_leaf
).si_then([FNAME, c, offset, init_leaf, begin, end]
(typename leaf_node_t::Ref ret) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"read leaf at offset {} {}",
c.trans,
offset,
mapped_space_visitor_t *visitor ///< [in] mapped space visitor
) {
LOG_PREFIX(FixedKVBtree::lookup_depth_range);
- SUBDEBUGT(seastore_lba_details, "{} -> {}", c.trans, from, to);
+ SUBTRACET(seastore_fixedkv_tree, "{} -> {}", c.trans, from, to);
return seastar::do_with(
from,
[c, to, visitor, &iter, &li, &ll](auto &d) {
auto riter = ll(*(root_entry.node));
root_entry.pos = riter->get_offset();
}
- SUBDEBUGT(seastore_lba_details, "got root, depth {}", c.trans, root.get_depth());
+ SUBTRACET(seastore_fixedkv_tree, "got root, depth {}", c.trans, root.get_depth());
return lookup_depth_range(
c,
iter,
depth_t split_from = iter.check_split();
- SUBDEBUGT(seastore_lba_details, "split_from {}, depth {}", c.trans, split_from, iter.get_depth());
+ SUBTRACET(seastore_fixedkv_tree, "split_from {}, depth {}", c.trans, split_from, iter.get_depth());
if (split_from == iter.get_depth()) {
auto nroot = c.cache.template alloc_new_extent<internal_node_t>(
pivot,
right->get_paddr());
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"splitted {} into left: {}, right: {}",
c.trans,
*pos.node,
if (split_from > 1) {
auto &pos = iter.get_internal(split_from);
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"splitting internal {} at depth {}, parent: {} at pos: {}",
c.trans,
*pos.node,
}
} else {
auto &pos = iter.leaf;
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"splitting leaf {}, parent: {} at pos: {}",
c.trans,
*pos.node,
LOG_PREFIX(FixedKVBtree::handle_merge);
if (iter.get_depth() == 1 ||
!iter.leaf.node->below_min_capacity()) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"no need to merge leaf, leaf size {}, depth {}",
c.trans,
iter.leaf.node->get_size(),
[FNAME, this, c, &iter](auto &to_merge) {
return trans_intr::repeat(
[FNAME, this, c, &iter, &to_merge] {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"merging depth {}",
c.trans,
to_merge);
auto &pos = iter.get_internal(to_merge);
if (to_merge == iter.get_depth()) {
if (pos.node->get_size() == 1) {
- SUBDEBUGT(seastore_lba_details, "collapsing root", c.trans);
+ SUBTRACET(seastore_fixedkv_tree, "collapsing root", c.trans);
c.cache.retire_extent(c.trans, pos.node);
assert(pos.pos == 0);
auto node_iter = pos.get_iter();
get_tree_stats<self_type>(c.trans).depth = iter.get_depth();
root_dirty = true;
} else {
- SUBDEBUGT(seastore_lba_details, "no need to collapse root", c.trans);
+ SUBTRACET(seastore_fixedkv_tree, "no need to collapse root", c.trans);
}
return seastar::stop_iteration::yes;
} else if (pos.node->below_min_capacity()) {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"continuing, next node {} depth {} at min",
c.trans,
*pos.node,
to_merge);
return seastar::stop_iteration::no;
} else {
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"complete, next node {} depth {} not min",
c.trans,
*pos.node,
? parent_pos.node->get_node_meta().end
: next_iter->get_key();
- SUBDEBUGT(seastore_lba_details, "parent: {}, node: {}", c.trans, *parent_pos.node, *pos.node);
+ SUBTRACET(seastore_fixedkv_tree, "parent: {}, node: {}", c.trans, *parent_pos.node, *pos.node);
return get_node<NodeType>(
c,
depth,
parent_pos.pos--;
}
- SUBDEBUGT(seastore_lba_details, "l: {}, r: {}, replacement: {}", c.trans, *l, *r, *replacement);
+ SUBTRACET(seastore_fixedkv_tree, "l: {}, r: {}, replacement: {}", c.trans, *l, *r, *replacement);
c.cache.retire_extent(c.trans, l);
c.cache.retire_extent(c.trans, r);
} else {
pos.pos = orig_position - replacement_l->get_size();
}
- SUBDEBUGT(
- seastore_lba_details,
+ SUBTRACET(
+ seastore_fixedkv_tree,
"l: {}, r: {}, replacement_l: {}, replacement_r: {}",
c.trans, *l, *r, *replacement_l, *replacement_r);
c.cache.retire_extent(c.trans, l);