]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: better debug outputs 41803/head
authorXuehan Xu <xxhdx1985126@gmail.com>
Fri, 3 Sep 2021 15:19:28 +0000 (23:19 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Wed, 8 Sep 2021 03:04:34 +0000 (11:04 +0800)
Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/lba_manager/btree/lba_btree.cc
src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc
src/crimson/os/seastore/transaction_manager.h

index f095982adeb8b54e26709209dfc3bc416f67bcb5..a7c5d4fcc6af2598c79e8368d3fbefa0d3817687 100644 (file)
@@ -662,6 +662,7 @@ void Cache::invalidate(Transaction& t, CachedExtent& conflicting_extent)
       if (!i->is_valid()) {
         continue;
       }
+      DEBUGT("was mutating extent: {}", t, *i);
       efforts.mutate.increment(i->get_length());
       efforts.mutate_delta_bytes += i->get_delta().length();
     }
@@ -804,7 +805,10 @@ record_t Cache::prepare_record(Transaction &t)
 
   // Should be valid due to interruptible future
   for (auto &i: t.read_set) {
-    assert(i.ref->is_valid());
+    if (!i.ref->is_valid()) {
+      DEBUGT("read_set invalid extent: {}, aborting", t, *i.ref);
+      ceph_abort("no invalid extent allowed in transactions' read_set");
+    }
     get_by_ext(efforts.read_by_ext,
                i.ref->get_type()).increment(i.ref->get_length());
   }
index b12b346eab551930a33679a0a763936ef9e2ebe3..a6d871b59037d92903b47aae89d6304fcf75fbb3 100644 (file)
@@ -549,7 +549,12 @@ LBABtree::handle_split_ret LBABtree::handle_split(
 
     if (split_from > 1) {
       auto &pos = iter.get_internal(split_from);
-      DEBUGT("splitting internal {} at depth {}", c.trans, *pos.node, split_from);
+      DEBUGT("splitting internal {} at depth {}, parent: {} at pos: {}",
+       c.trans,
+       *pos.node,
+       split_from,
+       *parent_pos.node,
+       parent_pos.pos);
       auto [left, right] = split_level(parent_pos, pos);
 
       if (pos.pos < left->get_size()) {
@@ -562,7 +567,11 @@ LBABtree::handle_split_ret LBABtree::handle_split(
       }
     } else {
       auto &pos = iter.leaf;
-      DEBUGT("splitting leaf {}", c.trans, *pos.node);
+      DEBUGT("splitting leaf {}, parent: {} at pos: {}",
+       c.trans,
+       *pos.node,
+       *parent_pos.node,
+       parent_pos.pos);
       auto [left, right] = split_level(parent_pos, pos);
 
       /* right->get_node_meta().begin == pivot == right->begin()->get_key()
index 66aea6a44274bc219b2e47c62f813e972c73b51a..1cd3d15381f1b27a163e9963c4ca733e933def26 100644 (file)
@@ -323,7 +323,7 @@ OMapInnerNode::merge_entry(
   auto is_left = (iter + 1) == iter_end();
   auto donor_iter = is_left ? iter - 1 : iter + 1;
   return omap_load_extent(oc, donor_iter->get_val(), get_meta().depth - 1)
-    .si_then([=] (auto &&donor) mutable {
+    .si_then([=, px=this] (auto &&donor) mutable {
     auto [l, r] = is_left ?
       std::make_pair(donor, entry) : std::make_pair(entry, donor);
     auto [liter, riter] = is_left ?
@@ -332,7 +332,8 @@ OMapInnerNode::merge_entry(
       logger().debug("{}::merge_entry make_full_merge l {} r {}", __func__, *l, *r);
       assert(entry->extent_is_below_min());
       return l->make_full_merge(oc, r).si_then([liter=liter, riter=riter,
-                                                  l=l, r=r, oc, this] (auto &&replacement){
+                                                  l=l, r=r, oc, this, px] (auto &&replacement){
+       logger().debug("OMapInnerNode::merge_entry to update parent: {}", *px);
         journal_inner_update(liter, replacement->get_laddr(), maybe_get_delta_buffer());
         journal_inner_remove(riter, maybe_get_delta_buffer());
         //retire extent
@@ -353,7 +354,8 @@ OMapInnerNode::merge_entry(
     } else {
       logger().debug("{}::merge_entry balanced l {} r {}", __func__, *l, *r);
       return l->make_balanced(oc, r).si_then([liter=liter, riter=riter,
-                                                l=l, r=r, oc, this] (auto tuple) {
+                                                l=l, r=r, oc, this, px] (auto tuple) {
+       logger().debug("OMapInnerNode::merge_entry to update parent: {}", *px);
         auto [replacement_l, replacement_r, replacement_pivot] = tuple;
         //update operation will not cuase node overflow, so we can do it first
         journal_inner_update(liter, replacement_l->get_laddr(), maybe_get_delta_buffer());
index 2a455ab426b22d23ac6afa8a1414be26efebbe01..cbdb867c854eef03658ba288599d5bed24974357 100644 (file)
@@ -292,10 +292,12 @@ public:
       hint,
       len,
       ext->get_paddr()
-    ).si_then([ext=std::move(ext), len, this](auto &&ref) mutable {
+    ).si_then([ext=std::move(ext), len, hint, &t, this](auto &&ref) mutable {
+      LOG_PREFIX(TransactionManager::alloc_extent);
       ext->set_pin(std::move(ref));
       stats.extents_allocated_total++;
       stats.extents_allocated_bytes += len;
+      DEBUGT("new extent: {}, hint: {}", t, *ext, hint);
       return alloc_extent_iertr::make_ready_future<TCachedExtentRef<T>>(
        std::move(ext));
     });