Currently When `RemoteReservationRevoked` races with
`MOSDPGBackfill::OP_BACKFILL_FINISH`, the PG sate gets updated to
`backfill_wait`, backfill is suspended and the event is discarded. Note
that we have not rescheduled a backfill to happen again. This can lead
to the PG getting stuck in `backfill_Wait` forever.
Closes: https://tracker.ceph.com/issues/71493
Signed-off-by: Naveen Naidu <naveen.naidu@ibm.com>
PeeringState::Backfilling::react(const RemoteReservationRevoked &)
{
DECLARE_LOCALS;
- ps->state_set(PG_STATE_BACKFILL_WAIT);
- suspend_backfill();
if (ps->needs_backfill()) {
+ ps->state_set(PG_STATE_BACKFILL_WAIT);
+ suspend_backfill();
return transit<WaitLocalBackfillReserved>();
} else {
// raced with MOSDPGBackfill::OP_BACKFILL_FINISH, ignore