diff options
author | Johann Latocha | 2012-02-22 23:29:45 +0100 |
---|---|---|
committer | Johann Latocha | 2012-02-22 23:29:45 +0100 |
commit | 489f4b6fe496d8bdb34784291b3d08d17cace29e (patch) | |
tree | d31a5255fd73b4aee0a829d587a415bac877d688 /src | |
parent | [KERNEL] Minor bugfix (diff) | |
download | dnbd3-489f4b6fe496d8bdb34784291b3d08d17cace29e.tar.gz dnbd3-489f4b6fe496d8bdb34784291b3d08d17cace29e.tar.xz dnbd3-489f4b6fe496d8bdb34784291b3d08d17cace29e.zip |
[KERNEL] One more KP fixed
Diffstat (limited to 'src')
-rw-r--r-- | src/kernel/net.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/kernel/net.c b/src/kernel/net.c index e331177..74cd500 100644 --- a/src/kernel/net.c +++ b/src/kernel/net.c @@ -120,22 +120,29 @@ void dnbd3_net_disconnect(dnbd3_device_t *dev) // kill sending and receiving threads if (dev->thread_send) + { kthread_stop(dev->thread_send); + dev->thread_send = NULL; + } if (dev->thread_receive) + { kthread_stop(dev->thread_receive); + dev->thread_receive = NULL; + } if (dev->thread_discover) + { kthread_stop(dev->thread_discover); + dev->thread_discover = NULL; + } // clear socket if (dev->cur_server.sock) + { sock_release(dev->cur_server.sock); - - dev->thread_send = NULL; - dev->thread_receive = NULL; - dev->thread_discover = NULL; - dev->cur_server.sock = NULL; + dev->cur_server.sock = NULL; + } } void dnbd3_net_heartbeat(unsigned long arg) @@ -317,9 +324,9 @@ int dnbd3_net_discover(void *data) continue; // take server with lowest rtt - if (num > 1 && strcmp(dev->cur_server.host, best_server)) + if (num > 1 && strcmp(dev->cur_server.host, best_server) && !kthread_should_stop()) { - printk("INFO: Server %s on %s is faster (%lluus), switching\n", best_server, dev->disk->disk_name, best_rtt); + printk("INFO: Server %s on %s is faster (%lluus)\n", best_server, dev->disk->disk_name, best_rtt); kfree(buf); dev->thread_discover = NULL; dnbd3_net_disconnect(dev); |