From: Sage Weil Date: Thu, 20 Aug 2015 19:20:44 +0000 (-0400) Subject: Merge branch 'dont-cache-recovery' of git://github.com/yuyuyu101/ceph X-Git-Tag: v9.1.0~332 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5686d9badb0ba9e0d1b292271d28a36ce6a1f977;p=ceph.git Merge branch 'dont-cache-recovery' of git://github.com/yuyuyu101/ceph Reviewed-by: Samuel Just Reviewed-by: Sage Weil # Conflicts: # src/osd/ReplicatedBackend.cc # src/osd/ReplicatedBackend.h # src/osd/ReplicatedPG.cc --- 5686d9badb0ba9e0d1b292271d28a36ce6a1f977 diff --cc src/osd/ReplicatedBackend.cc index 9af193db6672,73906b4bec60..5ddc9fd311ef --- a/src/osd/ReplicatedBackend.cc +++ b/src/osd/ReplicatedBackend.cc @@@ -1607,8 -1608,8 +1611,9 @@@ void ReplicatedBackend::prep_push const hobject_t& soid, pg_shard_t peer, eversion_t version, interval_set &data_subset, - map >& clone_subsets, - PushOp *pop, bool cache_dont_need) + map, hobject_t::BitwiseComparator>& clone_subsets, - PushOp *pop) ++ PushOp *pop, ++ bool cache_dont_need) { get_parent()->begin_peer_recover(peer, soid); // take note. diff --cc src/osd/ReplicatedBackend.h index 216067561e62,f66c461a8684..155abfb881de --- a/src/osd/ReplicatedBackend.h +++ b/src/osd/ReplicatedBackend.h @@@ -299,8 -302,9 +302,9 @@@ private const hobject_t& soid, pg_shard_t peer, eversion_t version, interval_set &data_subset, - map >& clone_subsets, + map, hobject_t::BitwiseComparator>& clone_subsets, - PushOp *op); + PushOp *op, + bool cache = false); void calc_head_subsets(ObjectContextRef obc, SnapSet& snapset, const hobject_t& head, const pg_missing_t& missing, const hobject_t &last_backfill, diff --cc src/osd/ReplicatedPG.cc index 035149d8825b,d34ad92696b8..5a0eda2cc384 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@@ -371,21 -371,24 +371,22 @@@ bool ReplicatedPG::is_missing_object(co return pg_log.get_missing().missing.count(soid); } -void ReplicatedPG::wait_for_unreadable_object( - const hobject_t& soid, OpRequestRef op) +void ReplicatedPG::maybe_kick_recovery( + const hobject_t &soid) { - assert(is_unreadable_object(soid)); - eversion_t v; - bool needs_recovery = missing_loc.needs_recovery(soid, &v); - assert(needs_recovery); + if (!missing_loc.needs_recovery(soid, &v)) + return; - map::const_iterator p = recovering.find(soid); + map::const_iterator p = recovering.find(soid); if (p != recovering.end()) { - dout(7) << "missing " << soid << " v " << v << ", already recovering." << dendl; + dout(7) << "object " << soid << " v " << v << ", already recovering." << dendl; } else if (missing_loc.is_unfound(soid)) { - dout(7) << "missing " << soid << " v " << v << ", is unfound." << dendl; + dout(7) << "object " << soid << " v " << v << ", is unfound." << dendl; } else { - dout(7) << "missing " << soid << " v " << v << ", recovering." << dendl; + dout(7) << "object " << soid << " v " << v << ", recovering." << dendl; PGBackend::RecoveryHandle *h = pgbackend->open_recovery_op(); + h->cache_dont_need = false; if (is_missing_object(soid)) { recover_missing(soid, v, cct->_conf->osd_client_op_priority, h); } else {