From 74624688b3c003d1ed2763953aaf59974965fa22 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 4 Nov 2011 15:51:18 +0100 Subject: nbd: treat EPIPE from NBD_DO_IT as success This can be seen with "qemu-nbd -v -c", which returns 1 instead of 0 when you disconnect with "qemu-nbd -d". Signed-off-by: Paolo Bonzini Signed-off-by: Kevin Wolf --- nbd.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nbd.c b/nbd.c index fb5e424abe..e6c931c5ce 100644 --- a/nbd.c +++ b/nbd.c @@ -425,6 +425,13 @@ int nbd_client(int fd) TRACE("Doing NBD loop"); ret = ioctl(fd, NBD_DO_IT); + if (ret == -1 && errno == EPIPE) { + /* NBD_DO_IT normally returns EPIPE when someone has disconnected + * the socket via NBD_DISCONNECT. We do not want to return 1 in + * that case. + */ + ret = 0; + } serrno = errno; TRACE("NBD loop returned %d: %s", ret, strerror(serrno)); -- cgit v1.2.1