From: mohit84 Date: Wed, 22 Jul 2026 12:26:12 +0000 (+0530) Subject: Merge pull request #69824 from mohit84/backfill_stuck X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=95a007b9a054a6d84f2f8903aee6803b9369840c;p=ceph.git Merge pull request #69824 from mohit84/backfill_stuck crimson/osd: fix backfill deadlock in BackfillState::Waiting BackfillState::Enqueuing unconditionally posts RequestWaiting{} when budget available return false. Waiting can exit only via ObjectPushed which requires an in-flight push. If the budget is exhausted with no pushes in flight no objectPush will ever arrive and the PG stalls permanently. Solution: Introduce a dedicated BudgetBlocked state. When budget_available() is false and tracked_objects_completed()==true post RequestBudgetBlocked{} instead of RequestWaiting{}. BudgetBlocked calls get_backfill_throttle() to suspend until a slots free up, then fires BudgetAvailable{} which transitions directly back to Enqueuing to dispatch the next batch of pushes. Fixes: https://tracker.ceph.com/issues/77804 --- 95a007b9a054a6d84f2f8903aee6803b9369840c