]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore/transaction_manager: consider inconsistency between 58551/head
authorXuehan Xu <xuxuehan@qianxin.com>
Fri, 12 Jul 2024 10:14:53 +0000 (18:14 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Wed, 17 Jul 2024 04:36:01 +0000 (12:36 +0800)
commitd56779e521c8e6af0dff92186a20884f945759ef
tree1a633c8482f239aef0226bfbbd3bf80d795dc076
parent67afcf6ce7fdc5b2fbaa8dbdd50c1df1279004e5
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>
src/crimson/os/seastore/transaction_manager.cc