summaryrefslogtreecommitdiffstats
path: root/src/server/net.c
diff options
context:
space:
mode:
authorsr2012-09-01 18:08:27 +0200
committersr2012-09-01 18:08:27 +0200
commit3e992e066c6aeb3972758a2304cccbdba024c31e (patch)
treeb7d31b75002d5b6edd3c18b884eebf08346828ac /src/server/net.c
parent[SERVER] Added soft and hard timeouts for image deletion: reject any new clie... (diff)
downloaddnbd3-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.c8
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;