From 19dc272d11013f5852270a9dfde8027e8172d2fb Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Fri, 15 Jan 2016 13:33:21 +0800 Subject: [PATCH] mds: add config option to suspend logging The option creates long-standing unsafe MDS requests. It help in testing unsafe request related corner cases. Signed-off-by: Yan, Zheng --- src/common/config_opts.h | 1 + src/mds/MDLog.cc | 11 +++++++++++ src/mds/MDLog.h | 1 + src/mds/MDSDaemon.cc | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 39f64998c8b9..1a423ed1a667 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -421,6 +421,7 @@ OPTION(mds_client_prealloc_inos, OPT_INT, 1000) OPTION(mds_early_reply, OPT_BOOL, true) OPTION(mds_default_dir_hash, OPT_INT, CEPH_STR_HASH_RJENKINS) OPTION(mds_log, OPT_BOOL, true) +OPTION(mds_log_pause, OPT_BOOL, false) OPTION(mds_log_skip_corrupt_events, OPT_BOOL, false) OPTION(mds_log_max_events, OPT_INT, -1) OPTION(mds_log_events_per_segment, OPT_INT, 1024) diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index 43cdc4850354..0191ca9a35c3 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -350,6 +350,11 @@ void MDLog::_submit_thread() submit_mutex.Lock(); while (!mds->is_daemon_stopping()) { + if (g_conf->mds_log_pause) { + submit_cond.Wait(submit_mutex); + continue; + } + map >::iterator it = pending_events.begin(); if (it == pending_events.end()) { submit_cond.Wait(submit_mutex); @@ -454,6 +459,12 @@ void MDLog::flush() journaler->flush(); } +void MDLog::kick_submitter() +{ + Mutex::Locker l(submit_mutex); + submit_cond.Signal(); +} + void MDLog::cap() { dout(5) << "cap" << dendl; diff --git a/src/mds/MDLog.h b/src/mds/MDLog.h index c8f9e70f4c28..a4c97e24b614 100644 --- a/src/mds/MDLog.h +++ b/src/mds/MDLog.h @@ -254,6 +254,7 @@ public: bool is_capped() { return capped; } void cap(); + void kick_submitter(); void shutdown(); // -- events -- diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index 4e1f0ff9d7b1..4668fff9406e 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -335,6 +335,7 @@ const char** MDSDaemon::get_tracked_conf_keys() const "mds_op_complaint_time", "mds_op_log_threshold", "mds_op_history_size", "mds_op_history_duration", "mds_enable_op_tracker", + "mds_log_pause", // clog & admin clog "clog_to_monitors", "clog_to_syslog", @@ -377,6 +378,10 @@ void MDSDaemon::handle_conf_change(const struct md_config_t *conf, mds_rank->update_log_config(); } } + if (!g_conf->mds_log_pause && changed.count("mds_log_pause")) { + if (mds_rank) + mds_rank->mdlog->kick_submitter(); + } } -- 2.47.3