diff --git a/src/server.c b/src/server.c index 9ec13ef12..e117b43b3 100644 --- a/src/server.c +++ b/src/server.c @@ -7176,6 +7176,34 @@ int main(int argc, char **argv) { sdsfree(options); } if (server.sentinel_mode) sentinelCheckConfigFile(); + + /* Do system checks */ +#ifdef __linux__ + linuxMemoryWarnings(); + sds err_msg = NULL; + if (checkXenClocksource(&err_msg) < 0) { + serverLog(LL_WARNING, "WARNING %s", err_msg); + sdsfree(err_msg); + } +#if defined (__arm64__) + int ret; + if ((ret = checkLinuxMadvFreeForkBug(&err_msg)) <= 0) { + if (ret < 0) { + serverLog(LL_WARNING, "WARNING %s", err_msg); + sdsfree(err_msg); + } else + serverLog(LL_WARNING, "Failed to test the kernel for a bug that could lead to data corruption during background save. " + "Your system could be affected, please report this error."); + if (!checkIgnoreWarning("ARM64-COW-BUG")) { + serverLog(LL_WARNING,"Redis will now exit to prevent data corruption. " + "Note that it is possible to suppress this warning by setting the following config: ignore-warnings ARM64-COW-BUG"); + exit(1); + } + } +#endif /* __arm64__ */ +#endif /* __linux__ */ + + /* Daemonize if needed */ server.supervised = redisIsSupervised(server.supervised_mode); int background = server.daemonize && !server.supervised; if (background) daemonize(); @@ -7217,30 +7245,6 @@ int main(int argc, char **argv) { if (!server.sentinel_mode) { /* Things not needed when running in Sentinel mode. */ serverLog(LL_NOTICE,"Server initialized"); - #ifdef __linux__ - linuxMemoryWarnings(); - sds err_msg = NULL; - if (checkXenClocksource(&err_msg) < 0) { - serverLog(LL_WARNING, "WARNING %s", err_msg); - sdsfree(err_msg); - } - #if defined (__arm64__) - int ret; - if ((ret = checkLinuxMadvFreeForkBug(&err_msg)) <= 0) { - if (ret < 0) { - serverLog(LL_WARNING, "WARNING %s", err_msg); - sdsfree(err_msg); - } else - serverLog(LL_WARNING, "Failed to test the kernel for a bug that could lead to data corruption during background save. " - "Your system could be affected, please report this error."); - if (!checkIgnoreWarning("ARM64-COW-BUG")) { - serverLog(LL_WARNING,"Redis will now exit to prevent data corruption. " - "Note that it is possible to suppress this warning by setting the following config: ignore-warnings ARM64-COW-BUG"); - exit(1); - } - } - #endif /* __arm64__ */ - #endif /* __linux__ */ aofLoadManifestFromDisk(); loadDataFromDisk(); aofOpenIfNeededOnServerStart();