diff options
author | Simon Rettberg | 2020-03-04 17:49:50 +0100 |
---|---|---|
committer | Simon Rettberg | 2020-03-04 17:49:50 +0100 |
commit | 930b65f26cb39687a113641f56711a2d58f886ca (patch) | |
tree | e0a0c5e73ea9820a4d64641209bde320359c37a2 /src/server/altservers.c | |
parent | [SERVER] Likewise, get rid of same loops in client handler (diff) | |
download | dnbd3-930b65f26cb39687a113641f56711a2d58f886ca.tar.gz dnbd3-930b65f26cb39687a113641f56711a2d58f886ca.tar.xz dnbd3-930b65f26cb39687a113641f56711a2d58f886ca.zip |
[SERVER] Add timer task for saving cache maps
Cache maps will now be saved periodically, but only if either they have
a "dirty" bit set, which happens if any bits in the map get cleared
again (due to corruption), or if new data has been replicated from an
uplink server. This either means at least one byte received and 5
minutes have passed, or at least 500MB have been downloaded. The timer
currently runs every 20 seconds.
Diffstat (limited to 'src/server/altservers.c')
-rw-r--r-- | src/server/altservers.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/server/altservers.c b/src/server/altservers.c index a6ad235..380737c 100644 --- a/src/server/altservers.c +++ b/src/server/altservers.c @@ -274,6 +274,26 @@ int altservers_getHostListForReplication(const char *image, dnbd3_host_t *server } /** + * Returns true if there is at least one alt-server the + * given image name would be allowed to be cloned from. + */ +bool altservers_imageHasAltServers(const char *image) +{ + bool ret = false; + mutex_lock( &altServersLock ); + for ( int i = 0; i < numAltServers; ++i ) { + if ( altServers[i].isClientOnly || ( !altServers[i].isPrivate && _proxyPrivateOnly ) ) + continue; + if ( !isImageAllowed( &altServers[i], image ) ) + continue; + ret = true; + break; + } + mutex_unlock( &altServersLock ); + return ret; +} + +/** * Get <size> alt servers. If there are more alt servers than * requested, random servers will be picked. * This function is suited for finding uplink servers as |