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 c1fe800f0..ef16e7b56 100644 --- a/os/log.c +++ b/os/log.c @@ -113,7 +113,7 @@ void (*OsVendorVErrorFProc) (const char *, va_list args) = NULL; #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; @@ -316,7 +316,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; @@ -574,7 +574,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) { @@ -589,7 +589,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 */