From 60b2ba6ef9ed779d750958b6422f05c93a4a2d91 Mon Sep 17 00:00:00 2001 From: sr Date: Mon, 3 Sep 2012 21:00:26 +0200 Subject: [SERVER] Check which dnbd3 devices are idle and ready to use for proxy mode [SERVER] Skeleton of server-to-server communication [SERVER] Update access-time of images in use by actual clients [*] Add dnbd3_host_t type to handle address+port+addrtype consistently across the project --- src/server/server.h | 41 +++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 26 deletions(-) (limited to 'src/server/server.h') diff --git a/src/server/server.h b/src/server/server.h index c608066..93f219e 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -28,37 +28,28 @@ #include "../config.h" #include "../types.h" -// one byte in the map covers 8 4kib blocks, so 32kib per byte -// "+ (1 << 15) - 1" is required to account for the last bit of -// the image that is smaller than 32kib -// this would be the case whenever the image file size is not a -// multiple of 32kib (= the number of blocks is not divisible by 8) -// ie: if the image is 49152 bytes and you do 49152 >> 15 you get 1, -// but you actually need 2 bytes to have a complete cache map -#define IMGSIZE_TO_MAPBYTES(bytes) ((int)(((bytes) + (1 << 15) - 1) >> 15)) typedef struct { - char *config_group; // exact name of group in config file that represents this image - char *low_name; // full (global) name of image, lowercased for comparison, eg. "uni-freiburg/rz/ubuntu-12.04" - int rid; // revision of provided image - char *file; // path to image file or device - uint64_t filesize; // size of image + char *config_group; // exact name of group in config file that represents this image + char *low_name; // full (global) name of image, lowercased for comparison, eg. "uni-freiburg/rz/ubuntu-12.04" + int rid; // revision of provided image + char *file; // path to image file or device + uint64_t filesize; // size of image dnbd3_server_entry_t servers[NUMBER_SERVERS]; // known alt servers that also offer that image - time_t atime; // last access time - uint8_t *cache_map; // cache map telling which parts are locally cached - char *cache_file; // path to local cache of image (in case the image is read from a dnbd3 device) - char working; // whether this image is considered working. local images are "working" if the local file exists, proxied images have to have at least one working upstream server or a complete local cache file - time_t delete_soft; // unixtime telling when this image should be deleted. if there are still clients using this image it weill be kept, but new clients requesting the image will be rejected. 0 = never - time_t delete_hard; // unixtime telling when this image should be deleted, no matter if there are still clients connected. 0 = never - uint8_t relayed; // TRUE if relayed from other server (needs dnbd3 client module loaded) + time_t atime; // last access time + uint8_t *cache_map; // cache map telling which parts are locally cached + char *cache_file; // path to local cache of image (in case the image is read from a dnbd3 device) + char working; // whether this image is considered working. local images are "working" if the local file exists, proxied images have to have at least one working upstream server or a complete local cache file + time_t delete_soft; // unixtime telling when this image should be deleted. if there are still clients using this image it weill be kept, but new clients requesting the image will be rejected. 0 = never + time_t delete_hard; // unixtime telling when this image should be deleted, no matter if there are still clients connected. 0 = never + uint8_t relayed; // TRUE if relayed from other server (needs dnbd3 client module loaded) } dnbd3_image_t; typedef struct { int sock; - uint8_t ipaddr[16]; - uint8_t addrtype; // ip version (AF_INET or AF_INET6) + dnbd3_host_t host; uint8_t is_server; // TRUE if a server in proxy mode, FALSE if real client pthread_t thread; dnbd3_image_t *image; @@ -66,11 +57,9 @@ typedef struct typedef struct { - uint8_t hostaddr[16]; - uint16_t port; - uint8_t hostaddrtype; + dnbd3_host_t host; gchar *comment; - GSList *namespaces; // List of dnbd3_namespace_t + GSList *namespaces; // List of dnbd3_namespace_t } dnbd3_trusted_server_t; typedef struct -- cgit v1.2.3-55-g7522