diff options
author | Johann Latocha | 2012-01-30 12:28:38 +0100 |
---|---|---|
committer | Johann Latocha | 2012-01-30 12:28:38 +0100 |
commit | 23c91a086d70898303ca3f8a0fb70a161b79bb37 (patch) | |
tree | 35b25a6578dd2c41357723109883aa04f0ab1c59 /src/kernel/blk.c | |
parent | [SERVER] Reload configuration at runtime (diff) | |
download | dnbd3-23c91a086d70898303ca3f8a0fb70a161b79bb37.tar.gz dnbd3-23c91a086d70898303ca3f8a0fb70a161b79bb37.tar.xz dnbd3-23c91a086d70898303ca3f8a0fb70a161b79bb37.zip |
[KERNEL] Change server at runtime
[SERVER] Build error/warning on x64 fixed
Diffstat (limited to 'src/kernel/blk.c')
-rw-r--r-- | src/kernel/blk.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/kernel/blk.c b/src/kernel/blk.c index 213ae23..c495205 100644 --- a/src/kernel/blk.c +++ b/src/kernel/blk.c @@ -64,7 +64,10 @@ int dnbd3_blk_add_device(struct dnbd3_device *dev, int minor) int dnbd3_blk_del_device(struct dnbd3_device *dev) { if (dev->sock) + { sock_release(dev->sock); + dev->sock = NULL; + } del_gendisk(dev->disk); put_disk(dev->disk); @@ -83,17 +86,23 @@ int dnbd3_blk_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, switch (cmd) { case IOCTL_SET_HOST: - lo->host = (char *) arg; + strcpy(lo->host, (char *) arg); break; case IOCTL_SET_PORT: - lo->port = (char *) arg; + strcpy(lo->port, (char *) arg); break; case IOCTL_SET_IMAGE: - lo->image_id = (char *) arg; + strcpy(lo->image_id, (char *) arg); break; case IOCTL_CONNECT: - dnbd3_net_connect(lo); + if (lo->host && lo->port && lo->image_id) + dnbd3_net_connect(lo); + else + return -1; + break; + case IOCTL_DISCONNECT: + dnbd3_net_disconnect(lo); break; case BLKFLSBUF: break; |