]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commit
crimson/os/seastore/cache: Verify crc prior to complete_io
authorMatan Breizman <mbreizma@redhat.com>
Sun, 7 Dec 2025 10:36:28 +0000 (10:36 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Mon, 8 Dec 2025 16:50:07 +0000 (16:50 +0000)
commit95d0c2cc0c5db52e80015094645b4b0d43b360be
treec68455b7008596c045b31697a8a16d2f0b448434
parent3d89478817e6da0985cc6a28e591a6059725d7d4
crimson/os/seastore/cache: Verify crc prior to complete_io

Calling check_full_extent_integrity in pin_to_extent is wrong.
By the time we partially read the extent, another transaction
might fully load the entire extent. Either by a full_extent read
or by filling the missing unloaded extent gap.
This would result in veryfing the extent crc since it's fully
loaded. However, since the extent was only partially read our
data (and crc) might be outdated.
Instead move the crc checks to read_extent prior to complete_io.
That way we would only check the crc when the extent was intended to
be fully loaded. Other users of read_extent which do not use pin_crc
(CRC_NULL), would skip this check.

Fixes: https://tracker.ceph.com/issues/73790
Fixes: https://tracker.ceph.com/issues/72864
Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/cache.h
src/crimson/os/seastore/transaction_manager.cc
src/crimson/os/seastore/transaction_manager.h