]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: set min_version to newest version in maybe_force_recovery
authorXinze Chi <xinze@xsky.com>
Fri, 15 Sep 2017 08:02:27 +0000 (16:02 +0800)
committerXinze Chi <xinze@xsky.com>
Fri, 15 Sep 2017 08:46:58 +0000 (16:46 +0800)
Signed-off-by: Xinze Chi <xinze@xsky.com>
src/osd/PrimaryLogPG.cc

index b91cd4980beeaec8d69a7bc1d381fc112a47c072..25ff18696ba6c7c87b00d7ccb2f303efa999978e 100644 (file)
@@ -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;
+      }
     }
   }