diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 3f5778d37..5fd23b5fc 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -827,7 +827,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) } else if (!xf86NameCmp(s, "sync")) { LogMessageVerb(X_CONFIG, 1, "Syncing logfile enabled\n"); - LogSetParameter(XLOG_SYNC, TRUE); + xorgLogSync = TRUE; } else { LogMessageVerb(X_WARNING, 1, "Unknown Log option\n"); diff --git a/os/log.c b/os/log.c index b2ea91b48..49438da80 100644 --- a/os/log.c +++ b/os/log.c @@ -111,7 +111,7 @@ OR PERFORMANCE OF THIS SOFTWARE. #define DEFAULT_LOG_FILE_VERBOSITY 3 static int logFileFd = -1; -static Bool logSync = FALSE; +Bool xorgLogSync = FALSE; int xorgLogVerbosity = DEFAULT_LOG_VERBOSITY; int xorgLogFileVerbosity = DEFAULT_LOG_FILE_VERBOSITY; @@ -314,7 +314,7 @@ LogSetParameter(LogParameter param, int value) { switch (param) { case XLOG_SYNC: - logSync = value ? TRUE : FALSE; + xorgLogSync = value ? TRUE : FALSE; return TRUE; case XLOG_VERBOSITY: xorgLogVerbosity = value; @@ -559,7 +559,7 @@ LogSWrite(int verb, const char *buf, size_t len, Bool end_line) if (verb < 0 || xorgLogFileVerbosity >= verb) { if (inSignalContext && logFileFd >= 0) { ret = write(logFileFd, buf, len); - if (logSync) + if (xorgLogSync) doLogSync(); } else if (!inSignalContext && logFileFd != -1) { @@ -574,7 +574,7 @@ LogSWrite(int verb, const char *buf, size_t len, Bool end_line) } newline = end_line; write(logFileFd, buf, len); - if (logSync) + if (xorgLogSync) doLogSync(); } else if (!inSignalContext && needBuffer) { diff --git a/os/log_priv.h b/os/log_priv.h index 28f6fb26c..e83ec6cee 100644 --- a/os/log_priv.h +++ b/os/log_priv.h @@ -84,4 +84,11 @@ extern int xorgLogVerbosity; */ extern int xorgLogFileVerbosity; +/** + * @brief force fsync() on each log write + * + * If set to TRUE, force fsync() on each log write. + */ +extern Bool xorgLogSync; + #endif /* __XORG_OS_LOGGING_H */