@@ -268,7 +268,7 @@ overwrite_ops_t prepare_ops_list(
268268 ops.to_remap .push_back (extent_to_remap_t::create_remap2 (
269269 std::move (front.pin ),
270270 front.len ,
271- back.addr - front.addr - front.len ));
271+ back.addr . get_byte_distance < extent_len_t >( front.addr ) - front.len ));
272272 ops.to_remove .pop_front ();
273273 } else {
274274 // prepare to_remap, happens in one or multiple extents
@@ -289,7 +289,7 @@ overwrite_ops_t prepare_ops_list(
289289 back.pin ->get_key () + back.pin ->get_length ());
290290 ops.to_remap .push_back (extent_to_remap_t::create_remap1 (
291291 std::move (back.pin ),
292- back.addr - back.pin ->get_key (),
292+ back.addr . get_byte_distance < extent_len_t >( back.pin ->get_key () ),
293293 back.len ));
294294 ops.to_remove .pop_back ();
295295 }
@@ -342,8 +342,9 @@ overwrite_ops_t prepare_ops_list(
342342 range.insert (r.pin ->get_key (), r.pin ->get_length ());
343343 if (range.contains (region.addr , region.len ) && !r.pin ->is_clone ()) {
344344 to_remap.push_back (extent_to_remap_t::create_overwrite (
345- region.addr - range.begin ().get_start (), region.len ,
346- std::move (r.pin ), *region.to_write ));
345+ region.addr .get_byte_distance <
346+ extent_len_t > (range.begin ().get_start ()),
347+ region.len , std::move (r.pin ), *region.to_write ));
347348 return true ;
348349 }
349350 return false ;
@@ -649,35 +650,35 @@ struct overwrite_plan_t {
649650
650651public:
651652 extent_len_t get_left_size () const {
652- return data_begin - pin_begin;
653+ return data_begin. get_byte_distance < extent_len_t >( pin_begin) ;
653654 }
654655
655656 extent_len_t get_left_extent_size () const {
656- return aligned_data_begin - pin_begin;
657+ return aligned_data_begin. get_byte_distance < extent_len_t >( pin_begin) ;
657658 }
658659
659660 extent_len_t get_left_alignment_size () const {
660- return data_begin - aligned_data_begin;
661+ return data_begin. get_byte_distance < extent_len_t >( aligned_data_begin) ;
661662 }
662663
663664 extent_len_t get_right_size () const {
664- return pin_end - data_end;
665+ return pin_end. get_byte_distance < extent_len_t >( data_end) ;
665666 }
666667
667668 extent_len_t get_right_extent_size () const {
668- return pin_end - aligned_data_end;
669+ return pin_end. get_byte_distance < extent_len_t >( aligned_data_end) ;
669670 }
670671
671672 extent_len_t get_right_alignment_size () const {
672- return aligned_data_end - data_end;
673+ return aligned_data_end. get_byte_distance < extent_len_t >( data_end) ;
673674 }
674675
675676 extent_len_t get_aligned_data_size () const {
676- return aligned_data_end - aligned_data_begin;
677+ return aligned_data_end. get_byte_distance < extent_len_t >( aligned_data_begin) ;
677678 }
678679
679680 extent_len_t get_pins_size () const {
680- return pin_end - pin_begin;
681+ return pin_end. get_byte_distance < extent_len_t >( pin_begin) ;
681682 }
682683
683684 friend std::ostream& operator <<(
@@ -942,9 +943,9 @@ operate_ret operate_right(context_t ctx, LBAMappingRef &pin, const overwrite_pla
942943 std::nullopt );
943944 } else {
944945 auto append_offset =
945- overwrite_plan.data_end
946- - right_pin_begin
947- + pin->get_intermediate_offset ();
946+ overwrite_plan.data_end . get_byte_distance <
947+ extent_len_t >( right_pin_begin)
948+ + pin->get_intermediate_offset ();
948949 return ctx.tm .read_pin <ObjectDataBlock>(
949950 ctx.t , pin->duplicate ()
950951 ).si_then ([append_offset, append_len](auto right_extent) {
@@ -974,9 +975,9 @@ operate_ret operate_right(context_t ctx, LBAMappingRef &pin, const overwrite_pla
974975 std::nullopt );
975976 } else {
976977 auto append_offset =
977- overwrite_plan.data_end
978- - right_pin_begin
979- + pin->get_intermediate_offset ();
978+ overwrite_plan.data_end . get_byte_distance <
979+ extent_len_t >( right_pin_begin)
980+ + pin->get_intermediate_offset ();
980981 return ctx.tm .read_pin <ObjectDataBlock>(
981982 ctx.t , pin->duplicate ()
982983 ).si_then ([append_offset, append_len,
@@ -1102,8 +1103,8 @@ ObjectDataHandler::clear_ret ObjectDataHandler::trim_data_reservation(
11021103 ceph_assert (pin.get_key () >= object_data.get_reserved_data_base ());
11031104 ceph_assert (
11041105 pin.get_key () <= object_data.get_reserved_data_base () + size);
1105- auto pin_offset = pin.get_key () -
1106- object_data.get_reserved_data_base ();
1106+ auto pin_offset = pin.get_key (). template get_byte_distance < extent_len_t >(
1107+ object_data.get_reserved_data_base ()) ;
11071108 if ((pin.get_key () == (object_data.get_reserved_data_base () + size)) ||
11081109 (pin.get_val ().is_zero ())) {
11091110 /* First pin is exactly at the boundary or is a zero pin. Either way,
@@ -1517,10 +1518,12 @@ ObjectDataHandler::read_ret ObjectDataHandler::read(
15171518 DEBUGT (" got {}~{} from zero-pin {}~{}" ,
15181519 ctx.t ,
15191520 l_current,
1520- l_current_end - l_current,
1521+ l_current_end. get_byte_distance < loffset_t >( l_current) ,
15211522 pin_key,
15221523 pin_len);
1523- ret.append_zero (l_current_end - l_current);
1524+ ret.append_zero (
1525+ l_current_end.get_byte_distance <
1526+ extent_len_t >(l_current));
15241527 l_current = l_current_end;
15251528 return seastar::now ();
15261529 }
@@ -1537,7 +1540,7 @@ ObjectDataHandler::read_ret ObjectDataHandler::read(
15371540 DEBUGT (" reading {}~{} from indirect-pin {}~{}, direct-pin {}~{}(off={})" ,
15381541 ctx.t ,
15391542 l_current,
1540- l_current_end - l_current,
1543+ l_current_end. get_byte_distance < extent_len_t >( l_current) ,
15411544 pin_key,
15421545 pin_len,
15431546 e_key,
@@ -1549,14 +1552,16 @@ ObjectDataHandler::read_ret ObjectDataHandler::read(
15491552 DEBUGT (" reading {}~{} from pin {}~{}" ,
15501553 ctx.t ,
15511554 l_current,
1552- l_current_end - l_current,
1555+ l_current_end.get_byte_distance <
1556+ extent_len_t >(l_current),
15531557 pin_key,
15541558 pin_len);
15551559 e_key = pin_key;
15561560 e_len = pin_len;
15571561 e_off = 0 ;
15581562 }
1559- extent_len_t e_current_off = e_off + l_current - pin_key;
1563+ extent_len_t e_current_off = (l_current + e_off)
1564+ .template get_byte_distance <extent_len_t >(pin_key);
15601565 return ctx.tm .read_pin <ObjectDataBlock>(
15611566 ctx.t ,
15621567 std::move (pin)
@@ -1572,7 +1577,7 @@ ObjectDataHandler::read_ret ObjectDataHandler::read(
15721577 bufferptr (
15731578 extent->get_bptr (),
15741579 e_current_off,
1575- l_current_end - l_current));
1580+ l_current_end. get_byte_distance < extent_len_t >( l_current) ));
15761581 l_current = l_current_end;
15771582 return seastar::now ();
15781583 }).handle_error_interruptible (
@@ -1637,8 +1642,9 @@ ObjectDataHandler::fiemap_ret ObjectDataHandler::fiemap(
16371642 assert (ret_right > ret_left);
16381643 ret.emplace (
16391644 std::make_pair (
1640- ret_left - object_data.get_reserved_data_base (),
1641- ret_right - ret_left
1645+ ret_left.get_byte_distance <uint64_t >(
1646+ object_data.get_reserved_data_base ()),
1647+ ret_right.get_byte_distance <uint64_t >(ret_left)
16421648 ));
16431649 }
16441650 }
@@ -1716,7 +1722,8 @@ ObjectDataHandler::clone_ret ObjectDataHandler::clone_extents(
17161722 return trans_intr::do_for_each (
17171723 pins,
17181724 [&last_pos, &object_data, ctx, data_base](auto &pin) {
1719- auto offset = pin->get_key () - data_base;
1725+ auto offset = pin->get_key ().template get_byte_distance <
1726+ extent_len_t >(data_base);
17201727 ceph_assert (offset == last_pos);
17211728 auto fut = TransactionManager::alloc_extent_iertr
17221729 ::make_ready_future<LBAMappingRef>();
0 commit comments