diff options
author | Simon Rettberg | 2019-08-07 16:31:05 +0200 |
---|---|---|
committer | Simon Rettberg | 2019-08-07 16:31:05 +0200 |
commit | 121dd5eceb64be43d188670bff5bce265d57d199 (patch) | |
tree | 7e88e3668e9c1376b3ebee93f9eafbf7bfb8ee64 /src/server/uplink.c | |
parent | [BENCH] Allow specifying request block size (diff) | |
download | dnbd3-121dd5eceb64be43d188670bff5bce265d57d199.tar.gz dnbd3-121dd5eceb64be43d188670bff5bce265d57d199.tar.xz dnbd3-121dd5eceb64be43d188670bff5bce265d57d199.zip |
[SERVER] Lock-free queue for altservers check thread
Diffstat (limited to 'src/server/uplink.c')
-rw-r--r-- | src/server/uplink.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/server/uplink.c b/src/server/uplink.c index 9f99fe4..bb1ffdc 100644 --- a/src/server/uplink.c +++ b/src/server/uplink.c @@ -583,6 +583,10 @@ static void* uplink_mainloop(void *data) #endif } cleanup: ; + if ( !link->shutdown ) { + link->shutdown = true; + thread_detach( link->thread ); + } altservers_removeUplink( link ); uplink_saveCacheMap( link ); mutex_lock( &link->image->lock ); @@ -596,10 +600,6 @@ static void* uplink_mainloop(void *data) link->fd = -1; mutex_unlock( &link->sendMutex ); link->signal = NULL; - if ( !link->shutdown ) { - link->shutdown = true; - thread_detach( link->thread ); - } // Do not access link->image after unlocking, since we set // image->uplink to NULL. Acquire with image_lock first, // like done below when checking whether to re-init uplink |