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)
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);
journaler->flush();
}
+void MDLog::kick_submitter()
+{
+ Mutex::Locker l(submit_mutex);
+ submit_cond.Signal();
+}
+
void MDLog::cap()
{
dout(5) << "cap" << dendl;
bool is_capped() { return capped; }
void cap();
+ void kick_submitter();
void shutdown();
// -- events --
"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",
mds_rank->update_log_config();
}
}
+ if (!g_conf->mds_log_pause && changed.count("mds_log_pause")) {
+ if (mds_rank)
+ mds_rank->mdlog->kick_submitter();
+ }
}