]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: add depth parameter to FixedKVBtree::mapped_space_visitor_t
authorXuehan Xu <xxhdx1985126@gmail.com>
Tue, 15 Mar 2022 02:28:01 +0000 (10:28 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Sat, 7 May 2022 05:13:38 +0000 (13:13 +0800)
Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/os/seastore/btree/fixed_kv_btree.h
src/crimson/os/seastore/lba_manager.h
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc
src/crimson/os/seastore/transaction_manager.cc
src/test/crimson/seastore/test_transaction_manager.cc

index 19515b94b0f35f2af3b11178dd86dc8ff23bc776..4b07b729cff0a0e30666139c00cbbe0ce633945b 100644 (file)
@@ -58,7 +58,7 @@ public:
   using iterator_fut = base_iertr::future<iterator>;
 
   using mapped_space_visitor_t = std::function<
-    void(paddr_t, extent_len_t)>;
+    void(paddr_t, extent_len_t, depth_t)>;
 
   class iterator {
   public:
@@ -1108,7 +1108,10 @@ private:
        min_max_t<node_key_t>::max
       ).si_then([this, visitor, &iter](InternalNodeRef root_node) {
        iter.get_internal(root.get_depth()).node = root_node;
-       if (visitor) (*visitor)(root_node->get_paddr(), root_node->get_length());
+       if (visitor) (*visitor)(
+          root_node->get_paddr(),
+          root_node->get_length(),
+          root.get_depth());
        return lookup_root_iertr::now();
       });
     } else {
@@ -1117,9 +1120,12 @@ private:
        root.get_location(),
        min_max_t<node_key_t>::min,
        min_max_t<node_key_t>::max
-      ).si_then([visitor, &iter](LeafNodeRef root_node) {
+      ).si_then([visitor, &iter, this](LeafNodeRef root_node) {
        iter.leaf.node = root_node;
-       if (visitor) (*visitor)(root_node->get_paddr(), root_node->get_length());
+       if (visitor) (*visitor)(
+          root_node->get_paddr(),
+          root_node->get_length(),
+          root.get_depth());
        return lookup_root_iertr::now();
       });
     }
@@ -1156,7 +1162,7 @@ private:
       auto node_iter = f(*node);
       assert(node_iter != node->end());
       entry.pos = node_iter->get_offset();
-      if (visitor) (*visitor)(node->get_paddr(), node->get_length());
+      if (visitor) (*visitor)(node->get_paddr(), node->get_length(), depth);
       return seastar::now();
     });
   }
@@ -1189,7 +1195,7 @@ private:
       iter.leaf.node = node;
       auto node_iter = f(*node);
       iter.leaf.pos = node_iter->get_offset();
-      if (visitor) (*visitor)(node->get_paddr(), node->get_length());
+      if (visitor) (*visitor)(node->get_paddr(), node->get_length(), 1);
       return seastar::now();
     });
   }
index b898ed2cc64c5cfd468903c278b8b71cc7d1c2e5..122d0ada7af69ff08470f3caccfb36b398766a9d 100644 (file)
@@ -145,7 +145,7 @@ public:
   using scan_mapped_space_iertr = base_iertr;
   using scan_mapped_space_ret = scan_mapped_space_iertr::future<>;
   using scan_mapped_space_func_t = std::function<
-    void(paddr_t, extent_len_t)>;
+    void(paddr_t, extent_len_t, depth_t)>;
   virtual scan_mapped_space_ret scan_mapped_space(
     Transaction &t,
     scan_mapped_space_func_t &&f) = 0;
index 287ee7b45a2272a92a3e50dff97fbb935eaa476e..d4bebf764f3b03c50655196700e812a60a4b997c 100644 (file)
@@ -406,7 +406,7 @@ BtreeLBAManager::scan_mapped_space_ret BtreeLBAManager::scan_mapped_space(
                  interruptible::ready_future_marker{},
                  seastar::stop_iteration::yes);
              }
-             visitor(pos.get_val().paddr, pos.get_val().len);
+             visitor(pos.get_val().paddr, pos.get_val().len, 0);
              return LBABtree::iterate_repeat_ret_inner(
                interruptible::ready_future_marker{},
                seastar::stop_iteration::no);
index 795dc29e572edd2407b5aec45c086e08975971aa..6977c716d507b3c2549882939b319e07415484f9 100644 (file)
@@ -117,7 +117,7 @@ TransactionManager::mount_ertr::future<> TransactionManager::mount()
                       *segment_cleaner->get_empty_space_tracker()));
              return lba_manager->scan_mapped_space(
                t,
-               [this, FNAME, &t](paddr_t addr, extent_len_t len) {
+               [this, FNAME, &t](paddr_t addr, extent_len_t len, depth_t depth) {
                  TRACET(
                    "marking {}~{} used",
                    t,
index 43d33670378651aba8acfb6a875c8005dffad1d3..ad3de7dc39753390d9d199f5e750b1bd770f131c 100644 (file)
@@ -390,7 +390,7 @@ struct transaction_manager_test_t :
       [this, &tracker](auto &t) {
        return lba_manager->scan_mapped_space(
          t,
-         [&tracker](auto offset, auto len) {
+         [&tracker](auto offset, auto len, depth_t) {
            tracker->allocate(
              offset.as_seg_paddr().get_segment_id(),
              offset.as_seg_paddr().get_segment_off(),