From: Samuel Just Date: Tue, 11 Feb 2014 02:35:47 +0000 (-0800) Subject: ReplicatedPG: release backfill state on_global_recover not peer recover X-Git-Tag: v0.78~163^2~48 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=da4652c92d609a1a6ac1fcb547ffa3b60434e5dc;p=ceph.git ReplicatedPG: release backfill state on_global_recover not peer recover There may now be multiple backfill peers. Signed-off-by: Samuel Just --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 3c2372676be4..c7774601c71f 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(