From 2d2f37bb7c262e8ddc3f7d030cf4606ff114bfab Mon Sep 17 00:00:00 2001 From: Naveen Naidu Date: Thu, 29 Jan 2026 18:40:54 +0530 Subject: [PATCH] osd/PeeringState: handle race condition of RemoteReservationRevoked event for Backfilling state 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 --- src/osd/PeeringState.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index b6a7ceeec72..5dea950f466 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -5678,9 +5678,9 @@ boost::statechart::result 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(); } else { // raced with MOSDPGBackfill::OP_BACKFILL_FINISH, ignore -- 2.47.3