]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore: don't set INVALID extents to CLEAN when reading 51627/head
authorXuehan Xu <xxhdx1985126@gmail.com>
Tue, 21 Mar 2023 05:52:43 +0000 (05:52 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Sun, 21 May 2023 08:26:28 +0000 (08:26 +0000)
commite11dfec08b946bdba8b15b51753aa426061efa7b
tree43675b608b18a520300b9d334ebee54252701760
parentbec53a5f29f0dd7516fd061d4caddf66bc0bf085
crimson/os/seastore: don't set INVALID extents to CLEAN when reading
extents

CLEAN_PENDING extents may be invalidated before read completes:

1. transaction A retired an laddr, which lead to a RetirePlaceHolder in
   Cache
2. transaction B try to read that extent, and replace A's
   RetirePlaceHolder with it;
3. transaction A commits and invalidate that extent;
4. transaction B complete reading that extent;

In this case, we shouldn't set the extent's state to CLEAN

Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
(cherry picked from commit 729dabd8ff20a747e02c15113e005a6d61acc8d7)
src/crimson/os/seastore/cache.h