like CEPH_OSD_OP_TRUNCATE, the truncate within CEPH_OSD_OP_WRITE should
clear oi.data_digest too.
consider such circumstance:
[write 0~10]
[write 5~10 [1@5]]
the first write will generate data_digest, if the second write don't
clear digest, it will continue calc digest and make crc mismatch.
Fixes: https://tracker.ceph.com/issues/50763
Signed-off-by: Zengran Zhang <zhangzengran@sangfor.com.cn>
(cherry picked from commit
0e4ffe5e51291d1776aacfc0d88aa3b5f4c3ecca)
oi.size - op.extent.truncate_size);
ctx->modified_ranges.union_of(trim);
ctx->clean_regions.mark_data_region_dirty(op.extent.truncate_size, oi.size - op.extent.truncate_size);
+ oi.clear_data_digest();
}
if (op.extent.truncate_size != oi.size) {
truncate_update_size_and_usage(ctx->delta_stats,