From: myoungwon oh Date: Thu, 5 May 2022 11:30:15 +0000 (+0900) Subject: seastore: fix maybe_relarive_to in paddr_t to handle the both addrs transparently X-Git-Tag: v18.0.0~857^2~34 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2b923b0c79c96214a8dfc1427e2ea1d64aa4b55e;p=ceph.git seastore: fix maybe_relarive_to in paddr_t to handle the both addrs transparently Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index 10f432f6c095..04e7b3d01fce 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -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; }