diff options
author | Johann Latocha | 2012-01-20 14:30:07 +0100 |
---|---|---|
committer | Johann Latocha | 2012-01-20 14:30:07 +0100 |
commit | eeec0aa91fafefc3d55ebddf04b94a3bfc9e20bc (patch) | |
tree | ae486a7e58ab50a17909be5ae31809cc9ed3b613 | |
parent | First working version :) (diff) | |
download | dnbd3-eeec0aa91fafefc3d55ebddf04b94a3bfc9e20bc.tar.gz dnbd3-eeec0aa91fafefc3d55ebddf04b94a3bfc9e20bc.tar.xz dnbd3-eeec0aa91fafefc3d55ebddf04b94a3bfc9e20bc.zip |
Support files > 4GB
-rw-r--r-- | src/kernel/net.c | 3 | ||||
-rw-r--r-- | src/server/server.c | 9 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/kernel/net.c b/src/kernel/net.c index 0e7a871..1ec92ca 100644 --- a/src/kernel/net.c +++ b/src/kernel/net.c @@ -71,7 +71,6 @@ void dnbd3_net_connect(void) kernel_recvmsg(_sock, &msg, &iov, 1, sizeof(dnbd3_reply), msg.msg_flags); // set filesize - // FIXME: files > 4GB printk("INFO: dnbd3 filesize: %llu\n", dnbd3_reply.filesize); set_capacity(disk, dnbd3_reply.filesize >> 9); /* 512 Byte blocks */ @@ -145,7 +144,7 @@ int dnbd3_net_receive(void *data) sigset_t blocked, oldset; struct request *tmp_request, *received_request; void *kaddr; - int size; + unsigned int size; msg.msg_name = NULL; msg.msg_namelen = 0; diff --git a/src/server/server.c b/src/server/server.c index dfa53d7..7f62a53 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -20,6 +20,7 @@ #include "../version.h" int file; +off_t filesize; void print_help(char* argv_0) { @@ -50,10 +51,6 @@ void *handle_query(void *client_socket) struct dnbd3_request request; struct dnbd3_reply reply; uint16_t cmd; - off_t filesize; - struct stat st; - fstat(file, &st); - filesize = st.st_size; while (recv(sock, &request, sizeof(struct dnbd3_request), MSG_WAITALL) > 0) { @@ -107,6 +104,9 @@ int main(int argc, char* argv[]) { case 'f': file = open(optarg, O_RDONLY); + struct stat st; + fstat(file, &st); + filesize = st.st_size; break; case 'h': print_help(argv[0]); @@ -154,6 +154,7 @@ int main(int argc, char* argv[]) exit(EXIT_FAILURE); } + printf("INFO: Filesize: %llu bytes\n", filesize); printf("INFO: Server is ready...\n"); while (1) |