summaryrefslogtreecommitdiffstats
path: root/qemu-nbd.c
diff options
context:
space:
mode:
authorMax Reitz2015-01-27 03:02:59 +0100
committerKevin Wolf2015-02-06 17:24:22 +0100
commit1ce52846d3ce0e4b58caebcae84719bef6401fbb (patch)
tree47f86eff873a997ea9eb11e0804cd6b4b5757b61 /qemu-nbd.c
parentiotests: Fix 104 for NBD (diff)
downloadqemu-1ce52846d3ce0e4b58caebcae84719bef6401fbb.tar.gz
qemu-1ce52846d3ce0e4b58caebcae84719bef6401fbb.tar.xz
qemu-1ce52846d3ce0e4b58caebcae84719bef6401fbb.zip
nbd: Improve error messages
This patch makes use of the Error object for nbd_receive_negotiate() so that errors during negotiation look nicer. Furthermore, this patch adds an additional error message if the received magic was wrong, but would be correct for the other protocol version, respectively: So if an export name was specified, but the NBD server magic corresponds to an old handshake, this condition is explicitly signaled to the user, and vice versa. As these messages are now part of the "Could not open image" error message, additional filtering has to be employed in iotest 083, which this patch does as well. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'qemu-nbd.c')
-rw-r--r--qemu-nbd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/qemu-nbd.c b/qemu-nbd.c
index d222512412..4d8df08385 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -284,6 +284,7 @@ static void *nbd_client_thread(void *arg)
int fd, sock;
int ret;
pthread_t show_parts_thread;
+ Error *local_error = NULL;
sock = unix_socket_outgoing(sockpath);
if (sock < 0) {
@@ -291,8 +292,12 @@ static void *nbd_client_thread(void *arg)
}
ret = nbd_receive_negotiate(sock, NULL, &nbdflags,
- &size, &blocksize);
+ &size, &blocksize, &local_error);
if (ret < 0) {
+ if (local_error) {
+ fprintf(stderr, "%s\n", error_get_pretty(local_error));
+ error_free(local_error);
+ }
goto out_socket;
}