diff options
author | sr | 2012-09-01 18:08:27 +0200 |
---|---|---|
committer | sr | 2012-09-01 18:08:27 +0200 |
commit | 3e992e066c6aeb3972758a2304cccbdba024c31e (patch) | |
tree | b7d31b75002d5b6edd3c18b884eebf08346828ac /src/server/net.c | |
parent | [SERVER] Added soft and hard timeouts for image deletion: reject any new clie... (diff) | |
download | dnbd3-3e992e066c6aeb3972758a2304cccbdba024c31e.tar.gz dnbd3-3e992e066c6aeb3972758a2304cccbdba024c31e.tar.xz dnbd3-3e992e066c6aeb3972758a2304cccbdba024c31e.zip |
[KERNEL] Tell server whether we're a client or a server in proxy mode
[KERNEL] SysFS: Return empty string for current_server if not connected
[SERVER] Code refactoring
Diffstat (limited to 'src/server/net.c')
-rw-r--r-- | src/server/net.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/net.c b/src/server/net.c index b1a7b20..37ac0b4 100644 --- a/src/server/net.c +++ b/src/server/net.c @@ -160,6 +160,7 @@ void *dnbd3_handle_query(void *dnbd3_client) client_version = serializer_get_uint16(&payload); image_name = serializer_get_string(&payload); rid = serializer_get_uint16(&payload); + client->is_server = serializer_get_uint8(&payload); if (request.size < 3 || !image_name || client_version < MIN_SUPPORTED_CLIENT) { if (client_version < MIN_SUPPORTED_CLIENT) @@ -208,7 +209,8 @@ void *dnbd3_handle_query(void *dnbd3_client) else { client->image = image; - image->atime = time(NULL); // TODO: check if mutex is needed + if (!client->is_server) + image->atime = time(NULL); // TODO: check if mutex is needed if (image->cache_map && image->cache_file) image_cache = open(image->cache_file, O_RDWR); @@ -288,8 +290,8 @@ void *dnbd3_handle_query(void *dnbd3_client) // first make sure the whole requested part is in the local cache file while(cur_offset < last_offset) { - map_y = cur_offset >> 15; - map_x = (cur_offset >> 12) & 7; // mod 256 + map_y = cur_offset >> 15; // div 32768 + map_x = (cur_offset >> 12) & 7; // (X div 4096) mod 8 bit_mask = 0b00000001 << (map_x); cur_offset += 4096; |