Message ID | 1320418284-11081-2-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
diff --git a/nbd.c b/nbd.c index fb5e424..e6c931c 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));
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 <pbonzini@redhat.com> --- I think this is a bug (because there would be no way to exit qemu-nbd with zero status!), but the patch can be left out safely. nbd.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)