]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: by default, always wait for journal safe
authorSage Weil <sage@newdream.net>
Fri, 9 Jan 2009 22:33:09 +0000 (14:33 -0800)
committerSage Weil <sage@newdream.net>
Fri, 9 Jan 2009 22:33:09 +0000 (14:33 -0800)
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
src/config.h
src/mds/MDLog.cc

index e279ce469b24a7aaf5907789928018e40f591759..eaa14309c37175b8f8e6a6349ad395bd7e18f617 100644 (file)
@@ -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,
index ecac33887ad5386f2023cff7346a2ccad6956251..1f3087df5f1d4dc0eca8a9a273b78a87c6930c17 100644 (file)
@@ -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;
index 02078b6775603a270560c9b27dac24acaca0b1e4..4c8375f2b59b3035639d7da5e73b08a6066f2781 100644 (file)
@@ -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);