diff options
author | Johann Latocha | 2012-02-22 01:25:57 +0100 |
---|---|---|
committer | Johann Latocha | 2012-02-22 01:25:57 +0100 |
commit | b7098dd3b66269b82a2253cbd19555693cbfd3b9 (patch) | |
tree | 624b20111d7ac632acead73a1e968ab954d8ae85 /src/kernel/net.c | |
parent | [ALL] Send proper rid (diff) | |
download | dnbd3-b7098dd3b66269b82a2253cbd19555693cbfd3b9.tar.gz dnbd3-b7098dd3b66269b82a2253cbd19555693cbfd3b9.tar.xz dnbd3-b7098dd3b66269b82a2253cbd19555693cbfd3b9.zip |
[SERVER] Segfault on conf reload (hopefully!) fixed
Diffstat (limited to 'src/kernel/net.c')
-rw-r--r-- | src/kernel/net.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/kernel/net.c b/src/kernel/net.c index baa2966..bdab8c2 100644 --- a/src/kernel/net.c +++ b/src/kernel/net.c @@ -219,19 +219,6 @@ int dnbd3_net_discover(void *data) continue; } - // panic mode, take first responding server - if (dev->panic) - { - printk("WARN: Panic mode, taking server %s\n", current_server); - sock_release(sock); - kfree(buf); - dev->thread_discover = NULL; - dnbd3_net_disconnect(dev); - strcpy(dev->cur_server.host, current_server); - dnbd3_net_connect(dev); - return 0; - } - // Request filesize dnbd3_request.cmd = CMD_GET_SIZE; dnbd3_request.vid = dev->vid; @@ -253,6 +240,19 @@ int dnbd3_net_discover(void *data) if (kernel_recvmsg(sock, &msg, &iov, 1, dnbd3_reply.size, msg.msg_flags) <= 0) goto error; + // panic mode, take first responding server + if (dev->panic) + { + printk("WARN: Panic mode, taking server %s\n", current_server); + sock_release(sock); + kfree(buf); + dev->thread_discover = NULL; + dnbd3_net_disconnect(dev); + strcpy(dev->cur_server.host, current_server); + dnbd3_net_connect(dev); + return 0; + } + do_gettimeofday(&start); // start rtt measurement // Request block @@ -295,7 +295,7 @@ int dnbd3_net_discover(void *data) continue; error: - printk("ERROR: kernel_sendmsg or kernel_recvmsg (discover)\n"); + printk("ERROR: Send/Receive failed, host %s:%s (discover)\n", current_server, dev->cur_server.port); sock_release(sock); sock = NULL; continue; |