From: Xinze Chi Date: Fri, 15 Sep 2017 08:02:27 +0000 (+0800) Subject: osd: set min_version to newest version in maybe_force_recovery X-Git-Tag: v13.0.1~712^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dd080988f1466ee648629d412d22210f35816c11;p=ceph.git osd: set min_version to newest version in maybe_force_recovery Signed-off-by: Xinze Chi --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index b91cd4980be..25ff18696ba 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -726,7 +726,7 @@ void PrimaryLogPG::maybe_force_recovery() return; // find the oldest missing object - version_t min_version = 0; + version_t min_version = pg_log.get_log().head.version; hobject_t soid; if (!pg_log.get_missing().get_items().empty()) { min_version = pg_log.get_missing().get_rmissing().begin()->first; @@ -739,10 +739,14 @@ void PrimaryLogPG::maybe_force_recovery() if (*it == get_primary()) continue; pg_shard_t peer = *it; if (peer_missing.count(peer) && - !peer_missing[peer].get_items().empty() && - min_version > peer_missing[peer].get_rmissing().begin()->first) { - min_version = peer_missing[peer].get_rmissing().begin()->first; - soid = peer_missing[peer].get_rmissing().begin()->second; + !peer_missing[peer].get_items().empty()) { + const auto& min_obj = peer_missing[peer].get_rmissing().begin(); + dout(20) << __func__ << " peer " << peer << " min_version " << min_obj->first + << " oid " << min_obj->second << dendl; + if (min_version > min_obj->first) { + min_version = min_obj->first; + soid = min_obj->second; + } } }