diff options
author | Simon Rettberg | 2019-08-27 16:13:07 +0200 |
---|---|---|
committer | Simon Rettberg | 2019-08-27 16:13:07 +0200 |
commit | 69f5bf408b9587a6e2008fba2224c2d506f1a895 (patch) | |
tree | 8fc9eda7e3a0b105007b7a85a4cc35ecc1d4431d /src/server/globals.h | |
parent | [SERVER] Fix warnings, simplify locking (diff) | |
download | dnbd3-69f5bf408b9587a6e2008fba2224c2d506f1a895.tar.gz dnbd3-69f5bf408b9587a6e2008fba2224c2d506f1a895.tar.xz dnbd3-69f5bf408b9587a6e2008fba2224c2d506f1a895.zip |
[SERVER] Use reference counting for uplink
First step towards less locking for proxy mode
Diffstat (limited to 'src/server/globals.h')
-rw-r--r-- | src/server/globals.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/server/globals.h b/src/server/globals.h index 4d97c6b..5dd205a 100644 --- a/src/server/globals.h +++ b/src/server/globals.h @@ -8,6 +8,7 @@ #include <stdatomic.h> #include <time.h> #include <pthread.h> +#include "reftypes.h" typedef struct timespec ticks; @@ -64,6 +65,7 @@ typedef struct { #define RTT_NOT_REACHABLE 4 // No uplink was reachable struct _dnbd3_uplink { + ref reference; dnbd3_server_connection_t current; // Currently active connection; fd == -1 means disconnected dnbd3_server_connection_t better; // Better connection as found by altserver worker; fd == -1 means none dnbd3_signal_t* signal; // used to wake up the process @@ -107,7 +109,7 @@ struct _dnbd3_image { char *path; // absolute path of the image char *name; // public name of the image (usually relative path minus revision ID) - dnbd3_uplink_t *uplink; // pointer to a server connection + weakref uplinkref; // pointer to a server connection uint8_t *cache_map; // cache map telling which parts are locally cached, NULL if complete uint64_t virtualFilesize; // virtual size of image (real size rounded up to multiple of 4k) uint64_t realFilesize; // actual file size on disk |