a RemoteReservationRevoked message is received, so we can
restart the backfill process in a more safe and less-likely raced way.
Fixes: http://tracker.ceph.com/issues/38034
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
PG *pg = context< RecoveryMachine >().pg;
pg->state_set(PG_STATE_BACKFILL_WAIT);
cancel_backfill();
- return transit<WaitLocalBackfillReserved>();
+ if (pg->needs_backfill()) {
+ return transit<WaitLocalBackfillReserved>();
+ } else {
+ // raced with MOSDPGBackfill::OP_BACKFILL_FINISH, ignore
+ return discard_event();
+ }
}
void PG::RecoveryState::Backfilling::exit()