From 9a1e13cf736485ccbe69430c524d12e4088ea525 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Mon, 12 Sep 2011 11:35:55 -0700 Subject: [PATCH] PG: assemble backlog directly rather than queueing on corrupt log The queue responsible for calling generate_backlog hasn't actually been started at that stage of startup. Signed-off-by: Samuel Just --- src/osd/PG.cc | 19 ++++++------------- src/osd/PG.h | 2 -- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index e8c608fede7c1..36be8327f956f 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -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 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(); diff --git a/src/osd/PG.h b/src/osd/PG.h index c7939adfef3b1..cdeb71c1fc0e8 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -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 { -- 2.39.5