From da4652c92d609a1a6ac1fcb547ffa3b60434e5dc Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Mon, 10 Feb 2014 18:35:47 -0800 Subject: [PATCH] ReplicatedPG: release backfill state on_global_recover not peer recover There may now be multiple backfill peers. Signed-off-by: Samuel Just --- src/osd/ReplicatedPG.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 3c2372676be..c7774601c71 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -289,6 +289,12 @@ void ReplicatedPG::on_global_recover( dout(10) << "pushed " << soid << " to all replicas" << dendl; map::iterator i = recovering.find(soid); assert(i != recovering.end()); + if (backfills_in_flight.count(soid)) { + list requeue_list; + i->second->drop_backfill_read(&requeue_list); + requeue_ops(requeue_list); + backfills_in_flight.erase(soid); + } recovering.erase(i); finish_recovery_op(soid); if (waiting_for_degraded_object.count(soid)) { @@ -308,14 +314,6 @@ void ReplicatedPG::on_peer_recover( publish_stats_to_osd(); // done! peer_missing[peer].got(soid, recovery_info.version); - if (is_backfill_targets(peer) && backfills_in_flight.count(soid)) { - map::iterator i = recovering.find(soid); - assert(i != recovering.end()); - list requeue_list; - i->second->drop_backfill_read(&requeue_list); - requeue_ops(requeue_list); - backfills_in_flight.erase(soid); - } } void ReplicatedPG::begin_peer_recover( -- 2.47.3