summaryrefslogtreecommitdiffstats
path: root/src/server/uplink.c
diff options
context:
space:
mode:
authorSimon Rettberg2019-08-07 16:31:05 +0200
committerSimon Rettberg2019-08-07 16:31:05 +0200
commit121dd5eceb64be43d188670bff5bce265d57d199 (patch)
tree7e88e3668e9c1376b3ebee93f9eafbf7bfb8ee64 /src/server/uplink.c
parent[BENCH] Allow specifying request block size (diff)
downloaddnbd3-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.c8
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