]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/lba_manager/btree: factor out common LBANode helpers
authorSamuel Just <sjust@redhat.com>
Wed, 22 Jul 2020 23:32:12 +0000 (16:32 -0700)
committerSamuel Just <sjust@redhat.com>
Wed, 23 Sep 2020 22:13:51 +0000 (15:13 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h
src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.h

index 55860544d41968f9ac6fc29459eaa1c0439bc7b9..63597cd8fd9a58864c1c7feb43bb6a81138a6981 100644 (file)
@@ -183,6 +183,24 @@ struct LBANode : CachedExtent {
   virtual bool at_min_capacity() const = 0;
 
   virtual ~LBANode() = default;
+
+  void on_delta_write(paddr_t record_block_offset) final {
+    // All in-memory relative addrs are necessarily record-relative
+    resolve_relative_addrs(record_block_offset);
+  }
+
+  void on_initial_write() final {
+    // All in-memory relative addrs are necessarily block-relative
+    resolve_relative_addrs(get_paddr());
+  }
+
+  void on_clean_read() final {
+    // From initial write of block, relative addrs are necessarily block-relative
+    resolve_relative_addrs(get_paddr());
+  }
+
+protected:
+  virtual void resolve_relative_addrs(paddr_t base) = 0;
 };
 using LBANodeRef = LBANode::LBANodeRef;
 
index 1ac346077dcb40600f2b1021310a8e61301c6092..f6167b7e58450ae2afbd28f8da63e29a9701a20c 100644 (file)
@@ -178,22 +178,7 @@ struct LBAInternalNode
    * resolve_relative_addrs fixes up relative internal references
    * based on base.
    */
-  void resolve_relative_addrs(paddr_t base);
-
-  void on_delta_write(paddr_t record_block_offset) final {
-    // All in-memory relative addrs are necessarily record-relative
-    resolve_relative_addrs(record_block_offset);
-  }
-
-  void on_initial_write() final {
-    // All in-memory relative addrs are necessarily block-relative
-    resolve_relative_addrs(get_paddr());
-  }
-
-  void on_clean_read() final {
-    // From initial write of block, relative addrs are necessarily block-relative
-    resolve_relative_addrs(get_paddr());
-  }
+  void resolve_relative_addrs(paddr_t base) final;
 
   extent_types_t get_type() const final {
     return type;
@@ -422,19 +407,7 @@ struct LBALeafNode
   }
 
   // See LBAInternalNode, same concept
-  void resolve_relative_addrs(paddr_t base);
-
-  void on_delta_write(paddr_t record_block_offset) final {
-    resolve_relative_addrs(record_block_offset);
-  }
-
-  void on_initial_write() final {
-    resolve_relative_addrs(get_paddr());
-  }
-
-  void on_clean_read() final {
-    resolve_relative_addrs(get_paddr());
-  }
+  void resolve_relative_addrs(paddr_t base) final;
 
   ceph::bufferlist get_delta() final {
     assert(!delta_buffer.empty());