diff options
Diffstat (limited to 'src/server/globals.c')
-rw-r--r-- | src/server/globals.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/server/globals.c b/src/server/globals.c index 932b3d5..aca7551 100644 --- a/src/server/globals.c +++ b/src/server/globals.c @@ -16,7 +16,7 @@ char *_basePath = NULL; int _serverPenalty = 0; int _clientPenalty = 0; bool _isProxy = false; -bool _backgroundReplication = true; +int _backgroundReplication = BGR_FULL; int _bgrMinClients = 0; bool _lookupMissingForProxy = true; bool _sparseFiles = false; @@ -55,7 +55,6 @@ static int ini_handler(void *custom UNUSED, const char* section, const char* key SAVE_TO_VAR_BOOL( dnbd3, vmdkLegacyMode ); SAVE_TO_VAR_BOOL( dnbd3, isProxy ); SAVE_TO_VAR_BOOL( dnbd3, proxyPrivateOnly ); - SAVE_TO_VAR_BOOL( dnbd3, backgroundReplication ); SAVE_TO_VAR_INT( dnbd3, bgrMinClients ); SAVE_TO_VAR_BOOL( dnbd3, lookupMissingForProxy ); SAVE_TO_VAR_BOOL( dnbd3, sparseFiles ); @@ -70,6 +69,15 @@ static int ini_handler(void *custom UNUSED, const char* section, const char* key SAVE_TO_VAR_UINT( limits, maxImages ); SAVE_TO_VAR_UINT( limits, maxPayload ); SAVE_TO_VAR_UINT64( limits, maxReplicationSize ); + if ( strcmp( section, "dnbd3" ) == 0 && strcmp( key, "backgroundReplication" ) == 0 ) { + if ( strcmp( value, "hashblock" ) == 0 ) { + _backgroundReplication = BGR_HASHBLOCK; + } else if ( IS_TRUE( value ) ) { + _backgroundReplication = BGR_FULL; + } else { + _backgroundReplication = BGR_DISABLED; + } + } if ( strcmp( section, "logging" ) == 0 && strcmp( key, "fileMask" ) == 0 ) handleMaskString( value, &log_setFileMask ); if ( strcmp( section, "logging" ) == 0 && strcmp( key, "consoleMask" ) == 0 ) handleMaskString( value, &log_setConsoleMask ); if ( strcmp( section, "logging" ) == 0 && strcmp( key, "consoleTimestamps" ) == 0 ) log_setConsoleTimestamps( IS_TRUE(value) ); @@ -152,7 +160,7 @@ void globals_loadConfig() } } } - if ( _backgroundReplication && _sparseFiles && _bgrMinClients < 5 ) { + if ( _backgroundReplication == BGR_FULL && _sparseFiles && _bgrMinClients < 5 ) { logadd( LOG_WARNING, "Ignoring 'sparseFiles=true' since backgroundReplication is set to true and bgrMinClients is too low" ); _sparseFiles = false; } @@ -265,7 +273,11 @@ size_t globals_dumpConfig(char *buffer, size_t size) PINT(serverPenalty); PINT(clientPenalty); PBOOL(isProxy); - PBOOL(backgroundReplication); + if ( _backgroundReplication == BGR_HASHBLOCK ) { + P_ARG("backgroundReplication=hashblock\n"); + } else { + PBOOL(backgroundReplication); + } PINT(bgrMinClients); PBOOL(lookupMissingForProxy); PBOOL(sparseFiles); |