]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore/transaction_manager: consider inconsistency between 58837/head
authorXuehan Xu <xuxuehan@qianxin.com>
Fri, 12 Jul 2024 10:14:53 +0000 (18:14 +0800)
committerMatan Breizman <mbreizma@redhat.com>
Thu, 25 Jul 2024 07:48:43 +0000 (10:48 +0300)
commit64ebf230be61dd94531c728a6295af8ad20488c0
treea3c44c00b7ac8394b19d3f592df12167eecdf195
parent6f27a6d1df204ab9b34f7efe8ac621b081aa6ac1
crimson/os/seastore/transaction_manager: consider inconsistency between
backrefs and lbas acceptable when cleaning segments

Consider the following scene:
1. Trans.A writes the final record of Segment S, in which it overwrite
   another extent E in the same segment S;
2. Before Trans.A "complete_commit", Trans.B tries to rewrite new
   records and roll the segments, which closes Segment S;
3. Before Trans.A "complete_commit", a new cleaner Transaction C tries
   to clean the segment;

In this scenario, C might see a part of extent E's laddr space mapped
to another location within the same segment S. This is actually a valid
case.

Fixes: https://tracker.ceph.com/issues/66924
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
(cherry picked from commit d56779e521c8e6af0dff92186a20884f945759ef)
src/crimson/os/seastore/transaction_manager.cc