diff options
author | Simon Rettberg | 2019-08-28 22:14:34 +0200 |
---|---|---|
committer | Simon Rettberg | 2019-08-28 22:14:34 +0200 |
commit | 0fb5ec7152c79d10711139158533f96204755788 (patch) | |
tree | 58da426cb6628e9a2ef4fd329537530b68d79d3e | |
parent | [SERVER] Reintroduce check whether readFd is actually != -1 (diff) | |
download | dnbd3-0fb5ec7152c79d10711139158533f96204755788.tar.gz dnbd3-0fb5ec7152c79d10711139158533f96204755788.tar.xz dnbd3-0fb5ec7152c79d10711139158533f96204755788.zip |
[SERVER] Speed up shutdown of integrity checker
-rw-r--r-- | src/server/integrity.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/server/integrity.c b/src/server/integrity.c index e7ebeb2..1fcb558 100644 --- a/src/server/integrity.c +++ b/src/server/integrity.c @@ -13,6 +13,8 @@ #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> +#include <pthread.h> +#include <signal.h> #define CHECK_QUEUE_SIZE 200 @@ -56,13 +58,14 @@ void integrity_init() void integrity_shutdown() { assert( queueLen != -1 ); + if ( !bRunning ) + return; logadd( LOG_DEBUG1, "Shutting down integrity checker...\n" ); + pthread_kill( thread, SIGINT ); mutex_lock( &integrityQueueLock ); pthread_cond_signal( &queueSignal ); mutex_unlock( &integrityQueueLock ); thread_join( thread, NULL ); - while ( bRunning ) - usleep( 10000 ); mutex_destroy( &integrityQueueLock ); pthread_cond_destroy( &queueSignal ); logadd( LOG_DEBUG1, "Integrity checker exited normally.\n" ); |