summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-09-13 16:07:29 -0700
committerSamuel Just <sam.just@inktank.com>2013-09-23 22:54:59 -0700
commit40e1f129658f90f7c3d32a784cbe1a70761ca706 (patch)
treef8c406cda10e4757a25b7629734b60cb2d9487f3
parent914770f0c40091eb3025280ecd8b3707275dd698 (diff)
downloadceph-40e1f129658f90f7c3d32a784cbe1a70761ca706.tar.gz
ReplicatedPG: don't proceed to backfill until recovering is empty
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/osd/ReplicatedPG.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index dcf3efd7766..592ef8d3366 100644
--- a/src/osd/ReplicatedPG.cc
+++ b/src/osd/ReplicatedPG.cc
@@ -7525,7 +7525,8 @@ int ReplicatedPG::start_recovery_ops(
}
bool deferred_backfill = false;
- if (state_test(PG_STATE_BACKFILL) &&
+ if (recovering.empty() &&
+ state_test(PG_STATE_BACKFILL) &&
backfill_target >= 0 && started < max &&
missing.num_missing() == 0 &&
!waiting_on_backfill) {
@@ -7553,9 +7554,11 @@ int ReplicatedPG::start_recovery_ops(
dout(10) << " started " << started << dendl;
osd->logger->inc(l_osd_rop, started);
- if (started || recovery_ops_active > 0 || deferred_backfill)
+ if (!recovering.empty() ||
+ started || recovery_ops_active > 0 || deferred_backfill)
return started;
+ assert(recovering.empty());
assert(recovery_ops_active == 0);
int unfound = get_num_unfound();