@@ -811,34 +811,28 @@ struct journal_seq_t {
811811 } else if (segment_seq < other.segment_seq ) {
812812 return -1 ;
813813 }
814- if (offset.get_addr_type () == addr_types_t ::SEGMENT &&
815- other.offset .get_addr_type () == addr_types_t ::SEGMENT) {
816- auto &seg_paddr = offset.as_seg_paddr ();
817- auto &o_seg_paddr = other.offset .as_seg_paddr ();
818- if (seg_paddr.get_segment_off () > o_seg_paddr.get_segment_off ()) {
819- return 1 ;
820- } else if (seg_paddr.get_segment_off () < o_seg_paddr.get_segment_off ()) {
821- return -1 ;
822- }
823- if (seg_paddr.get_segment_id () > o_seg_paddr.get_segment_id ()) {
824- return 1 ;
825- } else if (seg_paddr.get_segment_id () < o_seg_paddr.get_segment_id ()) {
826- return -1 ;
827- }
828- } else if (offset.get_addr_type () == addr_types_t ::RANDOM_BLOCK &&
829- other.offset .get_addr_type () == addr_types_t ::RANDOM_BLOCK) {
830- auto &blk_paddr = offset.as_blk_paddr ();
831- auto &o_blk_paddr = other.offset .as_blk_paddr ();
832- if (blk_paddr.get_block_off () > o_blk_paddr.get_block_off ()) {
833- return 1 ;
834- } else if (blk_paddr.get_block_off () < o_blk_paddr.get_block_off ()) {
835- return -1 ;
814+ using ret_t = std::pair<int64_t , segment_id_t >;
815+ auto to_pair = [](const paddr_t &addr) -> ret_t {
816+ if (addr.get_addr_type () == addr_types_t ::SEGMENT) {
817+ auto &seg_addr = addr.as_seg_paddr ();
818+ return ret_t (seg_addr.get_segment_off (), seg_addr.get_segment_id ());
819+ } else if (addr.get_addr_type () == addr_types_t ::RANDOM_BLOCK) {
820+ auto &blk_addr = addr.as_blk_paddr ();
821+ return ret_t (blk_addr.get_block_off (), MAX_SEG_ID);
822+ } else {
823+ assert (0 == " impossible" );
824+ return ret_t (0 , MAX_SEG_ID);
836825 }
837- } else {
838- // offset.get_addr_type() != other.get_addr_type()
826+ };
827+ auto left = to_pair (offset);
828+ auto right = to_pair (other.offset );
829+ if (left > right) {
830+ return 1 ;
831+ } else if (left < right) {
839832 return -1 ;
833+ } else {
834+ return 0 ;
840835 }
841- return 0 ;
842836 }
843837};
844838
0 commit comments