]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: only check replicas in recover_replicas
authorSage Weil <sage@newdream.net>
Mon, 26 Jan 2009 19:51:43 +0000 (11:51 -0800)
committerSage Weil <sage@newdream.net>
Tue, 27 Jan 2009 00:21:45 +0000 (16:21 -0800)
src/osd/PG.cc
src/osd/ReplicatedPG.cc

index 1f02522c06f84c5ffa7b62e2162cf134acd8719b..dd07763ac2954221f1c920b165fa82aace35f937 100644 (file)
@@ -1355,10 +1355,11 @@ void PG::activate(ObjectStore::Transaction& t,
        }
       }
 
+      Missing& pm = peer_missing[peer];
+
       // update local version of peer's missing list!
       if (m) {
         eversion_t plu = peer_info[peer].last_update;
-        Missing& pm = peer_missing[peer];
         for (list<Log::Entry>::iterator p = m->log.log.begin();
              p != m->log.log.end();
              p++) 
@@ -1373,14 +1374,14 @@ void PG::activate(ObjectStore::Transaction& t,
       }
 
       // update our missing
-      if (peer_missing[peer].num_missing() == 0) {
+      if (pm.num_missing() == 0) {
        peer_info[peer].last_complete = peer_info[peer].last_update;
         dout(10) << "activate peer osd" << peer << " already uptodate, " << peer_info[peer] << dendl;
        assert(peer_info[peer].is_uptodate());
         uptodate_set.insert(peer);
       } else {
         dout(10) << "activate peer osd" << peer << " " << peer_info[peer]
-                 << " missing " << peer_missing[peer] << dendl;
+                 << " missing " << pm << dendl;
       }
             
     }
index 6c24621a0d1b73ae4b927c00aefe66f711acdefc..e6abcdef958475dc692a8051aabb5d8a8574609b 100644 (file)
@@ -2679,7 +2679,7 @@ int ReplicatedPG::recover_replicas(int max)
   dout(-10) << "recover_replicas" << dendl;
 
   // this is FAR from an optimal recovery order.  pretty lame, really.
-  for (unsigned i=0; i<acting.size(); i++) {
+  for (unsigned i=1; i<acting.size(); i++) {
     int peer = acting[i];
     assert(peer_missing.count(peer));