]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add config option to suspend logging 7199/head
authorYan, Zheng <zyan@redhat.com>
Fri, 15 Jan 2016 05:33:21 +0000 (13:33 +0800)
committerYan, Zheng <zyan@redhat.com>
Fri, 15 Jan 2016 05:34:45 +0000 (13:34 +0800)
The option creates long-standing unsafe MDS requests. It help in
testing unsafe request related corner cases.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
src/common/config_opts.h
src/mds/MDLog.cc
src/mds/MDLog.h
src/mds/MDSDaemon.cc

index 39f64998c8b92e8e18cbcbd340e541be1ecb14b7..1a423ed1a667902db6de81c9aeb7643110330436 100644 (file)
@@ -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)
index 43cdc48503548bb4b9a5250d04cea635cf5886f2..0191ca9a35c39cbd231e9e94315cd689ce90c371 100644 (file)
@@ -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<uint64_t,list<PendingEvent> >::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;
index c8f9e70f4c282c91922dbcb9e8a9137eb83ddb01..a4c97e24b614a348a852fbe595a6cb560efd4932 100644 (file)
@@ -254,6 +254,7 @@ public:
   bool is_capped() { return capped; }
   void cap();
 
+  void kick_submitter();
   void shutdown();
 
   // -- events --
index 4e1f0ff9d7b15fcc526f25998c8093820d83f4d9..4668fff9406e49b6db81c307260fbee2f982f611 100644 (file)
@@ -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();
+  }
 }