]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PG: assemble backlog directly rather than queueing on corrupt log
authorSamuel Just <samuel.just@dreamhost.com>
Mon, 12 Sep 2011 18:35:55 +0000 (11:35 -0700)
committerSamuel Just <samuel.just@dreamhost.com>
Mon, 12 Sep 2011 21:08:41 +0000 (14:08 -0700)
The queue responsible for calling generate_backlog hasn't actually been
started at that stage of startup.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
src/osd/PG.cc
src/osd/PG.h

index e8c608fede7c1c4eddd93ea598eac4b008b9c862..36be8327f956f45d88d383e456075e88a553fdc4 100644 (file)
@@ -2479,11 +2479,12 @@ void PG::read_state(ObjectStore *store)
     write_info(t);
     store->apply_transaction(t);
 
-    // Generate a backlog
-    osd->queue_generate_backlog(this);
-    while (!info.log_backlog)
-      wait(); // See RecoverState::Initial, kick() is called in 
-              // the BacklogComplete callback
+    
+    map<eversion_t,Log::Entry> omap;
+    generate_backlog_epoch = osd->osdmap->get_epoch();
+    if (build_backlog_map(omap))
+      assemble_backlog(omap);
+    generate_backlog_epoch = 0;
   }
 
   // log any weirdness
@@ -3955,14 +3956,6 @@ PG::RecoveryState::Initial::react(const MLogRec& i) {
   return transit< Stray >();
 }
 
-boost::statechart::result
-PG::RecoveryState::Initial::react(const BacklogComplete&) {
-  PG *pg = context< RecoveryMachine >().pg;
-  pg->kick(); // See read_state, wakes up thread waiting on backlog for
-              // corrupt log
-  return discard_event();
-}
-
 void PG::RecoveryState::Initial::exit() {
   PG *pg = context< RecoveryMachine >().pg;
   pg->reset_last_warm_restart();
index c7939adfef3b11e8ad8801a472cf80210b0920f1..cdeb71c1fc0e8a54f78436334975911905af87cb 100644 (file)
@@ -1041,14 +1041,12 @@ public:
        boost::statechart::custom_reaction< MNotifyRec >,
        boost::statechart::custom_reaction< MInfoRec >,
        boost::statechart::custom_reaction< MLogRec >,
-       boost::statechart::custom_reaction< BacklogComplete >,
        boost::statechart::transition< boost::statechart::event_base, Crashed >
        > reactions;
 
       boost::statechart::result react(const MNotifyRec&);
       boost::statechart::result react(const MInfoRec&);
       boost::statechart::result react(const MLogRec&);
-      boost::statechart::result react(const BacklogComplete&);
     };
 
     struct Reset : boost::statechart::state< Reset, RecoveryMachine >, NamedState {