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;
}
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);
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;
}