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 | |
parent | [KERNEL] Minor bugfix (diff) | |
download | dnbd3-489f4b6fe496d8bdb34784291b3d08d17cace29e.tar.gz dnbd3-489f4b6fe496d8bdb34784291b3d08d17cace29e.tar.xz dnbd3-489f4b6fe496d8bdb34784291b3d08d17cace29e.zip |
[KERNEL] One more KP fixed
-rw-r--r-- | dnbd3-server.conf.example | 6 | ||||
-rw-r--r-- | src/kernel/net.c | 21 |
2 files changed, 17 insertions, 10 deletions
diff --git a/dnbd3-server.conf.example b/dnbd3-server.conf.example index 3f7a0e2..d04aea0 100644 --- a/dnbd3-server.conf.example +++ b/dnbd3-server.conf.example @@ -8,18 +8,18 @@ rid=3 [Ubuntu 10.10] file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-10.10-desktop-i386.iso -servers=132.230.4.29;132.230.8.96 +servers=132.230.4.29;132.230.4.220;132.230.8.96 vid=2 rid=1 [Ubuntu 11.04] file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-11.04-desktop-i386.iso -servers=132.230.4.29;132.230.8.96 +servers=132.230.4.29;132.230.4.220;132.230.8.96 vid=3 rid=1 [Ubuntu 11.10] file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-11.10-desktop-i386.iso -servers=132.230.4.29;132.230.8.96 +servers=132.230.4.29;132.230.4.220;132.230.8.96 vid=4 rid=1 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); |