]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/os/seastore/lba_manager/btree/lba_btree_node.cc
import quincy beta 17.1.0
[ceph.git] / ceph / src / crimson / os / seastore / lba_manager / btree / lba_btree_node.cc
diff --git a/ceph/src/crimson/os/seastore/lba_manager/btree/lba_btree_node.cc b/ceph/src/crimson/os/seastore/lba_manager/btree/lba_btree_node.cc
new file mode 100644 (file)
index 0000000..21154fe
--- /dev/null
@@ -0,0 +1,64 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include <sys/mman.h>
+#include <string.h>
+
+#include <memory>
+#include <string.h>
+
+#include "include/buffer.h"
+#include "include/byteorder.h"
+
+#include "crimson/os/seastore/lba_manager/btree/lba_btree_node.h"
+
+namespace {
+  seastar::logger& logger() {
+    return crimson::get_logger(ceph_subsys_seastore_lba);
+  }
+}
+
+namespace crimson::os::seastore::lba_manager::btree {
+
+std::ostream &LBAInternalNode::print_detail(std::ostream &out) const
+{
+  return out << ", size=" << get_size()
+            << ", meta=" << get_meta();
+}
+
+void LBAInternalNode::resolve_relative_addrs(paddr_t base)
+{
+  for (auto i: *this) {
+    if (i->get_val().is_relative()) {
+      auto updated = base.add_relative(i->get_val());
+      logger().debug(
+       "LBAInternalNode::resolve_relative_addrs {} -> {}",
+       i->get_val(),
+       updated);
+      i->set_val(updated);
+    }
+  }
+}
+
+std::ostream &LBALeafNode::print_detail(std::ostream &out) const
+{
+  return out << ", size=" << get_size()
+            << ", meta=" << get_meta();
+}
+
+void LBALeafNode::resolve_relative_addrs(paddr_t base)
+{
+  for (auto i: *this) {
+    if (i->get_val().paddr.is_relative()) {
+      auto val = i->get_val();
+      val.paddr = base.add_relative(val.paddr);
+      logger().debug(
+       "LBALeafNode::resolve_relative_addrs {} -> {}",
+       i->get_val().paddr,
+       val.paddr);
+      i->set_val(val);
+    }
+  }
+}
+
+}