]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: clear PG_STATE_CLEAN when repair object 30271/head
authorZengran Zhang <zhangzengran@sangfor.com.cn>
Tue, 20 Aug 2019 07:06:09 +0000 (15:06 +0800)
committerNathan Cutler <ncutler@suse.com>
Mon, 9 Sep 2019 20:14:16 +0000 (22:14 +0200)
commit012d9212cc0897516605cdf0ec00aaa571c62d05
tree30ccb806e783dc9b9f5b928f1aec1207f94b1300
parent796ba46418317a21f1356170d036291dc123284a
osd: clear PG_STATE_CLEAN when repair object

there is a race be found, when we repair object on clean state,
we queue a DoRecovery peering event, but before the peering event
dequeue,a snaptrim event on the missing object's snap dequeue,
then we will get pass the context< SnapTrimmer >().can_trim()
and go to get the context of the missing object(snapdir)

we can avoid this by clear clean state when we found missing..

Fixes: https://tracker.ceph.com/issues/41348
Signed-off-by: Zengran Zhang <zhangzengran@sangfor.com.cn>
(cherry picked from commit 521f095c6505bbee7570fb3c01b32436bdbf65a4)

Conflicts:
src/osd/PrimaryLogPG.cc
- assert() instead of ceph_assert(), and Feature PR #26942 ("Improvements to
  auto repair") is not being backported
src/osd/PrimaryLogPG.cc