summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2019-08-28 22:14:34 +0200
committerSimon Rettberg2019-08-28 22:14:34 +0200
commit0fb5ec7152c79d10711139158533f96204755788 (patch)
tree58da426cb6628e9a2ef4fd329537530b68d79d3e
parent[SERVER] Reintroduce check whether readFd is actually != -1 (diff)
downloaddnbd3-0fb5ec7152c79d10711139158533f96204755788.tar.gz
dnbd3-0fb5ec7152c79d10711139158533f96204755788.tar.xz
dnbd3-0fb5ec7152c79d10711139158533f96204755788.zip
[SERVER] Speed up shutdown of integrity checker
-rw-r--r--src/server/integrity.c7
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" );