From: myoungwon oh Date: Tue, 17 May 2022 05:10:52 +0000 (+0900) Subject: seastore: make journal_seq_t.cmp compatible with blk_paddr_t X-Git-Tag: v18.0.0~857^2~31 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bdc1c1490ff11269c7808e762893fcbdea3a0503;p=ceph-ci.git seastore: make journal_seq_t.cmp compatible with blk_paddr_t Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index 0fb7116ba5e..a7ff94ac494 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -813,16 +813,31 @@ private: } else if (segment_seq < other.segment_seq) { return -1; } - auto &seg_paddr = offset.as_seg_paddr(); - auto &o_seg_paddr = other.offset.as_seg_paddr(); - if (seg_paddr.get_segment_off() > o_seg_paddr.get_segment_off()) { - return 1; - } else if (seg_paddr.get_segment_off() < o_seg_paddr.get_segment_off()) { - return -1; - } - if (seg_paddr.get_segment_id() > o_seg_paddr.get_segment_id()) { - return 1; - } else if (seg_paddr.get_segment_id() < o_seg_paddr.get_segment_id()) { + if (offset.get_addr_type() == addr_types_t::SEGMENT && + other.offset.get_addr_type() == addr_types_t::SEGMENT) { + auto &seg_paddr = offset.as_seg_paddr(); + auto &o_seg_paddr = other.offset.as_seg_paddr(); + if (seg_paddr.get_segment_off() > o_seg_paddr.get_segment_off()) { + return 1; + } else if (seg_paddr.get_segment_off() < o_seg_paddr.get_segment_off()) { + return -1; + } + if (seg_paddr.get_segment_id() > o_seg_paddr.get_segment_id()) { + return 1; + } else if (seg_paddr.get_segment_id() < o_seg_paddr.get_segment_id()) { + return -1; + } + } else if (offset.get_addr_type() == addr_types_t::RANDOM_BLOCK && + other.offset.get_addr_type() == addr_types_t::RANDOM_BLOCK) { + auto &blk_paddr = offset.as_blk_paddr(); + auto &o_blk_paddr = other.offset.as_blk_paddr(); + if (blk_paddr.get_block_off() > o_blk_paddr.get_block_off()) { + return 1; + } else if (blk_paddr.get_block_off() < o_blk_paddr.get_block_off()) { + return -1; + } + } else { + // offset.get_addr_type() != other.get_addr_type() return -1; } return 0;