From: Xuehan Xu Date: Sat, 4 Jul 2026 05:03:28 +0000 (+0800) Subject: crimson/os/seastore/transaction: mutation_pending extents' paddrs should X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ba0655657c932dd5362b68cf1cb8bfae66696d12;p=ceph.git crimson/os/seastore/transaction: mutation_pending extents' paddrs should be on the same device as the stable prior's old paddr Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/os/seastore/transaction.h b/src/crimson/os/seastore/transaction.h index c256e5b8f997..3f698b41531c 100644 --- a/src/crimson/os/seastore/transaction.h +++ b/src/crimson/os/seastore/transaction.h @@ -431,15 +431,18 @@ public: auto &mextent = *i; write_set.erase(mextent); extent_len_t off = 0; - if (new_paddr.is_absolute_segmented()) { - assert(mextent.get_paddr().as_seg_paddr().get_segment_id() - == old_paddr.as_seg_paddr().get_segment_id()); + if (old_paddr.is_absolute_segmented()) { + assert(mextent.get_paddr().as_seg_paddr().get_segment_id() == + old_paddr.as_seg_paddr().get_segment_id()); + assert(mextent.get_paddr().as_seg_paddr().get_segment_off() >= + old_paddr.as_seg_paddr().get_segment_off()); assert(mextent.get_paddr().as_seg_paddr().get_segment_off() - >= old_paddr.as_seg_paddr().get_segment_off()); - off = mextent.get_paddr().as_seg_paddr().get_segment_off() - - old_paddr.as_seg_paddr().get_segment_off(); + + mextent.get_length() <= + old_paddr.as_seg_paddr().get_segment_off() + len); + off = mextent.get_paddr().as_seg_paddr().get_segment_off() - + old_paddr.as_seg_paddr().get_segment_off(); } else { - assert(new_paddr.is_absolute_random_block()); + assert(mextent.get_paddr().is_absolute_random_block()); off = mextent.get_paddr().as_blk_paddr().get_device_off() - old_paddr.as_blk_paddr().get_device_off(); }