diff options
author | Johann Latocha | 2012-01-24 20:42:30 +0100 |
---|---|---|
committer | Johann Latocha | 2012-01-24 20:42:30 +0100 |
commit | 90123ef4fbe457642325362ca07fe5b75df3f0c9 (patch) | |
tree | 12654b30e62d0819c54abbceae483800d1d608d1 /src/kernel/net.c | |
parent | Support files > 4GB (diff) | |
download | dnbd3-90123ef4fbe457642325362ca07fe5b75df3f0c9.tar.gz dnbd3-90123ef4fbe457642325362ca07fe5b75df3f0c9.tar.xz dnbd3-90123ef4fbe457642325362ca07fe5b75df3f0c9.zip |
Serving more than one image.
Diffstat (limited to 'src/kernel/net.c')
-rw-r--r-- | src/kernel/net.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/kernel/net.c b/src/kernel/net.c index 1ec92ca..ac8e81d 100644 --- a/src/kernel/net.c +++ b/src/kernel/net.c @@ -31,7 +31,7 @@ void dnbd3_net_connect(void) struct task_struct *thread_send; struct task_struct *thread_receive; - if (!_host || !_port) + if (!_host || !_port || !_image_id) { printk("ERROR: Host or port not set."); return; @@ -55,6 +55,7 @@ void dnbd3_net_connect(void) // prepare message and send request dnbd3_request.cmd = CMD_GET_SIZE; + strcpy(dnbd3_request.image_id, _image_id); msg.msg_name = NULL; msg.msg_namelen = 0; msg.msg_control = NULL; @@ -71,6 +72,12 @@ void dnbd3_net_connect(void) kernel_recvmsg(_sock, &msg, &iov, 1, sizeof(dnbd3_reply), msg.msg_flags); // set filesize + if (dnbd3_reply.filesize <= 0) + { + printk("ERROR: File size returned by server is < 0.\n"); + return; + } + printk("INFO: dnbd3 filesize: %llu\n", dnbd3_reply.filesize); set_capacity(disk, dnbd3_reply.filesize >> 9); /* 512 Byte blocks */ |