]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: generate primary backlog independent of master log
authorSage Weil <sage@newdream.net>
Mon, 27 Jul 2009 18:09:39 +0000 (11:09 -0700)
committerSage Weil <sage@newdream.net>
Mon, 27 Jul 2009 19:06:52 +0000 (12:06 -0700)
We may have the master log (i.e. know the correct pg state), but
still need a backlog to recover some peers.

src/osd/PG.cc

index 5688ad6deb577a6cdd6f2b4f8dfbc5d3809e17e5..1aa3e0afd0169e641b08427febbc4c509b8df9d7 100644 (file)
@@ -1132,16 +1132,6 @@ bool PG::recover_master_log(map< int, map<pg_t,Query> >& query_map)
 
   have_master_log = true;
 
-
-  // -- do i need to generate backlog for any of my peers?
-  if (oldest_update < log.tail && !log.backlog) {
-    dout(10) << "must generate backlog for some peers, my tail " 
-             << log.tail << " > oldest_update " << oldest_update
-             << dendl;
-    osd->queue_generate_backlog(this);
-    return false;
-  }
-
   return true;
 }
 
@@ -1166,6 +1156,16 @@ void PG::peer(ObjectStore::Transaction& t,
       return;
 
 
+  // -- do i need to generate backlog for any of my peers?
+  if (oldest_update < log.tail && !log.backlog) {
+    dout(10) << "must generate backlog for some peers, my tail " 
+             << log.tail << " > oldest_update " << oldest_update
+             << dendl;
+    osd->queue_generate_backlog(this);
+    return;
+  }
+
+
   /** COLLECT MISSING+LOG FROM PEERS **********/
   /*
     we also detect divergent replicas here by pulling the full log