summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2013-11-12 18:52:17 +0100
committerSimon Rettberg2013-11-12 18:52:17 +0100
commitd39c427e9acd810c9337bd77eb64996ad5fb4c2d (patch)
tree3b9ece793d6303ad870b2c64f09232a32ad18589
parent[SERVER] Save cache maps every 30 mins (diff)
downloaddnbd3-d39c427e9acd810c9337bd77eb64996ad5fb4c2d.tar.gz
dnbd3-d39c427e9acd810c9337bd77eb64996ad5fb4c2d.tar.xz
dnbd3-d39c427e9acd810c9337bd77eb64996ad5fb4c2d.zip
[SERVER] Shut down altservers finder properly
-rw-r--r--src/server/altservers.c10
-rw-r--r--src/server/altservers.h2
-rw-r--r--src/server/server.c2
3 files changed, 10 insertions, 4 deletions
diff --git a/src/server/altservers.c b/src/server/altservers.c
index 7360791..5317936 100644
--- a/src/server/altservers.c
+++ b/src/server/altservers.c
@@ -51,6 +51,7 @@ void altservers_init()
void altservers_shutdown()
{
if ( !initDone ) return;
+ write( signalPipe, "", 1 ); // Wake altservers thread up
pthread_join( altThread, NULL );
}
@@ -345,7 +346,7 @@ static void *altservers_main(void *data)
dnbd3_host_t servers[ALTS + 1];
serialized_buffer_t serialized;
struct timespec start, end;
- time_t nextCacheMapSave = time(NULL) + 120;
+ time_t nextCacheMapSave = time( NULL ) + 120;
setThreadName( "altserver-check" );
blockNoncriticalSignals();
@@ -386,6 +387,7 @@ static void *altservers_main(void *data)
memlogf( "[WARNING] epoll_wait() error in uplink_connector" );
usleep( 100000 );
}
+ if ( _shutdown ) goto cleanup;
// Empty pipe
do {
ret = read( readPipe, buffer, sizeof buffer );
@@ -521,10 +523,10 @@ static void *altservers_main(void *data)
pthread_mutex_unlock( &pendingLockConsume );
}
// Save cache maps of all images if applicable
- const time_t now = time(NULL);
- if (now > nextCacheMapSave) {
+ const time_t now = time( NULL );
+ if ( now > nextCacheMapSave ) {
nextCacheMapSave = now + SERVER_CACHE_MAP_SAVE_INTERVAL;
- printf("[DEBUG] Saving cache maps...\n");
+ printf( "[DEBUG] Saving cache maps...\n" );
image_saveAllCacheMaps();
}
}
diff --git a/src/server/altservers.h b/src/server/altservers.h
index de7643c..cbe99e2 100644
--- a/src/server/altservers.h
+++ b/src/server/altservers.h
@@ -5,6 +5,8 @@
void altservers_init();
+void altservers_shutdown();
+
int altservers_load();
int altservers_add(dnbd3_host_t *host, const char *comment, const int isPrivate, const int isClientOnly);
diff --git a/src/server/server.c b/src/server/server.c
index 5c54333..2d1448c 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -118,6 +118,8 @@ void dnbd3_cleanup()
}
socket_count = 0;
+ altservers_shutdown();
+
// Terminate all uplinks
image_killUplinks();