]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
seastore: fix maybe_relarive_to in paddr_t to handle the both addrs transparently
authormyoungwon oh <ohmyoungwon@gmail.com>
Thu, 5 May 2022 11:30:15 +0000 (20:30 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Thu, 19 May 2022 00:33:12 +0000 (09:33 +0900)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/seastore_types.h

index 10f432f6c095a7daa8f0060a1071bc0813fd71f0..04e7b3d01fceb1ae94971977fdaa2ccc30c7a352 100644 (file)
@@ -649,8 +649,7 @@ struct seg_paddr_t : public paddr_t {
   paddr_t maybe_relative_to(paddr_t base) const {
     assert(!base.is_block_relative());
     if (is_block_relative()) {
-      seg_paddr_t& s = base.as_seg_paddr();
-      return s.add_block_relative(*this);
+      return base.add_block_relative(*this);
     } else
       return *this;
   }
@@ -700,6 +699,11 @@ struct blk_paddr_t : public paddr_t {
     return *this;
   }
 
+  paddr_t add_block_relative(paddr_t o) const {
+    assert(o.is_block_relative());
+    return add_relative(o);
+  }
+
 private:
   void check_blk_off_valid(const block_off_t offset) const {
     assert(offset <= BLK_OFF_MAX);
@@ -1805,6 +1809,7 @@ inline paddr_t paddr_t::add_relative(paddr_t o) const {
 
 inline paddr_t paddr_t::add_block_relative(paddr_t o) const {
   PADDR_OPERATION(addr_types_t::SEGMENT, seg_paddr_t, add_block_relative(o))
+  PADDR_OPERATION(addr_types_t::RANDOM_BLOCK, blk_paddr_t, add_block_relative(o))
   ceph_assert(0 == "not supported type");
   return P_ADDR_NULL;
 }