From 71f6a08992e8e9007e98e0e8b58427c08c3688fa Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Thu, 2 Dec 2010 16:38:00 -0800 Subject: [PATCH] MDS: miscellaneous standby-replay fixes and cleanups. Signed-off-by: Greg Farnum --- src/mds/MDLog.cc | 3 ++- src/mds/MDLog.h | 2 ++ src/mds/MDS.cc | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index adbbc003e296e..6a0cd4a6ebf3b 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -467,7 +467,8 @@ void MDLog::replay(Context *c) dout(10) << "replay start, from " << journaler->get_read_pos() << " to " << journaler->get_write_pos() << dendl; - assert(num_events == 0); + assert(num_events == 0 || already_replayed); + already_replayed = true; replay_thread.create(); } diff --git a/src/mds/MDLog.h b/src/mds/MDLog.h index 74506b48acbe2..9012610a9cd4d 100644 --- a/src/mds/MDLog.h +++ b/src/mds/MDLog.h @@ -87,6 +87,7 @@ protected: return 0; } } replay_thread; + bool already_replayed; friend class ReplayThread; friend class C_MDL_Replay; @@ -151,6 +152,7 @@ public: journaler(0), logger(0), replay_thread(this), + already_replayed(false), expiring_events(0), expired_events(0), writing_subtree_map(false), cur_event(NULL) { } diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index f408b9593bf6a..38e57a028a310 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -1139,6 +1139,8 @@ void MDS::boot_start(int step, int r) case 3: if (is_replay() || is_oneshot_replay() || is_standby_replay()) { dout(2) << "boot_start " << step << ": replaying mds log" << dendl; + if(is_oneshot_replay() || is_standby_replay()) + mdlog->get_journaler()->set_readonly(); mdlog->replay(new C_MDS_BootStart(this, 4)); break; } else { @@ -1233,6 +1235,8 @@ void MDS::replay_done() if (is_standby_replay()) { standby_trim_segments(); + mdlog->get_journaler()->set_writeable(); + dout(10) << "setting replay timer" << dendl; timer.add_event_after(g_conf.mds_replay_interval, new C_Standby_replay_start(this)); return; -- 2.39.5