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 <xuxuehan@qianxin.com>
This commit is contained in:
Xuehan Xu 2026-07-04 13:03:28 +08:00
parent 64263d609d
commit ba0655657c

View File

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