]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Don't set backfill_toofull in RemoteReservationRevoked path
authorDavid Zafman <dzafman@redhat.com>
Fri, 23 Aug 2019 15:52:39 +0000 (08:52 -0700)
committerDavid Zafman <dzafman@redhat.com>
Thu, 19 Dec 2019 18:42:39 +0000 (10:42 -0800)
We shouldn't set backfill_toofull when a revoke occurs in the non-toofull
case.

Fixes: https://tracker.ceph.com/issues/41255
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit fa569ecfecc43ce685b29e0456f62cb085788f25)

Conflicts:
src/osd/PeeringState.cc
- file does not exist in nautilus due to refactoring: made the changes manually
  to src/osd/PG.cc
- no "DECLARE_LOCALS" in nautilus

src/osd/PG.cc

index ebbf71ff19a7aa06c37226d2e862e353428d188f..e98ff4a141608d578ff8c366b27b8fafedbb2c85 100644 (file)
@@ -7260,7 +7260,6 @@ void PG::RecoveryState::WaitRemoteBackfillReserved::retry()
   }
 
   pg->state_clear(PG_STATE_BACKFILL_WAIT);
-  pg->state_set(PG_STATE_BACKFILL_TOOFULL);
   pg->publish_stats_to_osd();
 
   pg->schedule_backfill_retry(pg->cct->_conf->osd_backfill_retry_interval);
@@ -7269,6 +7268,8 @@ void PG::RecoveryState::WaitRemoteBackfillReserved::retry()
 boost::statechart::result
 PG::RecoveryState::WaitRemoteBackfillReserved::react(const RemoteReservationRejected &evt)
 {
+  PG *pg = context< RecoveryMachine >().pg;
+  pg->state_set(PG_STATE_BACKFILL_TOOFULL);
   retry();
   return transit<NotBackfilling>();
 }