From c50f9eb31c5cac01ccf886f35bec871733b391f8 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 9 Jan 2009 14:33:09 -0800 Subject: [PATCH] mds: by default, always wait for journal safe Waiting for just sync can make clients lose requests when mds and osds die simultaneously. Now that we have an early_reply, the performance impact from always waiting for safe is mostly gone. --- src/config.cc | 1 + src/config.h | 1 + src/mds/MDLog.cc | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/src/config.cc b/src/config.cc index e279ce469b24a..eaa14309c3717 100644 --- a/src/config.cc +++ b/src/config.cc @@ -346,6 +346,7 @@ md_config_t g_conf = { mds_rdcap_ttl_ms: 60*1000, mds_log: true, + mds_log_unsafe: false, // only wait for log sync, when it's mostly safe to do so mds_log_max_events: -1, mds_log_max_segments: 100, // segment size defined by FileLayout, above mds_log_max_expiring: 20, diff --git a/src/config.h b/src/config.h index ecac33887ad53..1f3087df5f1d4 100644 --- a/src/config.h +++ b/src/config.h @@ -215,6 +215,7 @@ struct md_config_t { int mds_rdcap_ttl_ms; bool mds_log; + bool mds_log_unsafe; int mds_log_max_events; int mds_log_max_segments; int mds_log_max_expiring; diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index 02078b6775603..4c8375f2b59b3 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -191,6 +191,10 @@ void MDLog::submit_entry( LogEvent *le, Context *c, bool wait_safe ) if (c) { unflushed = 0; + + if (!g_conf.mds_log_unsafe) + wait_safe = true; + journaler->flush(wait_safe ? 0:c); if (wait_safe) journaler->wait_for_flush(0, c); @@ -213,6 +217,9 @@ void MDLog::submit_entry( LogEvent *le, Context *c, bool wait_safe ) void MDLog::wait_for_sync( Context *c ) { + if (!g_conf.mds_log_unsafe) + return wait_for_safe(c); + if (g_conf.mds_log) { // wait journaler->wait_for_flush(c, 0); -- 2.39.5