Blob Blame History Raw
From 3f5ffd9dc9075dff3ab8052d5cfb0cdd2bfd1d7d Mon Sep 17 00:00:00 2001
From: Eric Blake <eblake@redhat.com>
Date: Fri, 6 Oct 2017 19:24:09 +0200
Subject: [PATCH 17/34] block/nbd-client: nbd_co_send_request: fix return code

RH-Author: Eric Blake <eblake@redhat.com>
Message-id: <20171006192409.29915-5-eblake@redhat.com>
Patchwork-id: 76912
O-Subject: [RHEV-7.5 qemu-kvm-rhev PATCH 4/4] block/nbd-client: nbd_co_send_request: fix return code
Bugzilla: 1482478
RH-Acked-by: Max Reitz <mreitz@redhat.com>
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>

From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

It's incorrect to return success rc >= 0 if we skip qio_channel_writev_all()
call due to s->quit.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20170920124507.18841-4-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
(cherry picked from commit a693437037328a95d815ad5aec37ac2f8e130e58)
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
 block/nbd-client.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/block/nbd-client.c b/block/nbd-client.c
index ea728ff..ed48fcf 100644
--- a/block/nbd-client.c
+++ b/block/nbd-client.c
@@ -161,6 +161,8 @@ static int nbd_co_send_request(BlockDriverState *bs,
             if (ret != request->len) {
                 rc = -EIO;
             }
+        } else if (rc >= 0) {
+            rc = -EIO;
         }
         qio_channel_set_cork(s->ioc, false);
     } else {
-- 
1.8.3.1