summaryrefslogtreecommitdiffstats
path: root/src/kernel/blk.c
diff options
context:
space:
mode:
authorJohann Latocha2012-02-21 18:57:18 +0100
committerJohann Latocha2012-02-21 18:57:18 +0100
commit0d1e4c5c1632090d86d3b129c50882afdac7ddc0 (patch)
treee37a2f6284e046e557afc5a6e4ac207e9958bcda /src/kernel/blk.c
parent[KERNEL] Take fastest server if available (diff)
downloaddnbd3-0d1e4c5c1632090d86d3b129c50882afdac7ddc0.tar.gz
dnbd3-0d1e4c5c1632090d86d3b129c50882afdac7ddc0.tar.xz
dnbd3-0d1e4c5c1632090d86d3b129c50882afdac7ddc0.zip
[KERNEL] SysFS interface added (/sys/block/dnbd*/net/)
Diffstat (limited to 'src/kernel/blk.c')
-rw-r--r--src/kernel/blk.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/kernel/blk.c b/src/kernel/blk.c
index 192c3db..70d4e1f 100644
--- a/src/kernel/blk.c
+++ b/src/kernel/blk.c
@@ -20,6 +20,7 @@
#include "blk.h"
#include "net.h"
+#include "sysfs.h"
int dnbd3_blk_add_device(dnbd3_device_t *dev, int minor)
{
@@ -32,10 +33,15 @@ int dnbd3_blk_add_device(dnbd3_device_t *dev, int minor)
INIT_LIST_HEAD(&dev->request_queue_send);
INIT_LIST_HEAD(&dev->request_queue_receive);
+ memset(dev->cur_server.host, 0, 16);
+ memset(dev->cur_server.port, 0, 6);
+ dev->cur_server.rtt = 0;
+ dev->cur_server.sock = NULL;
+
dev->vid = 0;
dev->rid = 0;
- dev->sock = NULL;
- dev->num_servers = 0;
+ dev->alt_servers_num = 0;
+ memset(dev->alt_servers, 0, sizeof(dnbd3_server_t)*NUMBER_SERVERS);
dev->thread_send = NULL;
dev->thread_receive = NULL;
dev->thread_discover = NULL;
@@ -68,12 +74,14 @@ int dnbd3_blk_add_device(dnbd3_device_t *dev, int minor)
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, disk->queue);
dev->disk = disk;
- add_disk(disk); // must be last
+ add_disk(disk);
+ dnbd3_sysfs_init(dev);
return 0;
}
int dnbd3_blk_del_device(dnbd3_device_t *dev)
{
+ dnbd3_sysfs_exit(dev);
dnbd3_net_disconnect(dev);
del_gendisk(dev->disk);
put_disk(dev->disk);
@@ -95,8 +103,8 @@ int dnbd3_blk_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, u
switch (cmd)
{
case IOCTL_OPEN:
- strcpy(dev->host, msg->host);
- strcpy(dev->port, msg->port);
+ strcpy(dev->cur_server.host, msg->host);
+ strcpy(dev->cur_server.port, msg->port);
dev->vid = msg->vid;
dev->rid = msg->rid;
dnbd3_net_connect(dev);
@@ -110,7 +118,7 @@ int dnbd3_blk_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, u
case IOCTL_SWITCH:
dnbd3_net_disconnect(dev);
- strcpy(dev->host, msg->host);
+ strcpy(dev->cur_server.host, msg->host);
dnbd3_net_connect(dev);
break;