76daa3
From 3e2c0369fc46cd052a4f97cda57d879796bce790 Mon Sep 17 00:00:00 2001
76daa3
From: Paolo Bonzini <pbonzini@redhat.com>
76daa3
Date: Fri, 16 Jun 2017 10:28:42 +0200
76daa3
Subject: [PATCH 5/8] nbd: fix NBD over TLS (bz1461827)
76daa3
76daa3
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
76daa3
Message-id: <20170616102842.16984-1-pbonzini@redhat.com>
76daa3
Patchwork-id: 75621
76daa3
O-Subject: [RHEL7.4 qemu-kvm-rhev PATCH] nbd: fix NBD over TLS (bz1461827)
76daa3
Bugzilla: 1461827
76daa3
RH-Acked-by: Daniel P. Berrange <berrange@redhat.com>
76daa3
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
76daa3
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
76daa3
76daa3
Upstream status: queued in my NBD tree, reviewed and tested (see below)
76daa3
76daa3
When attaching the NBD QIOChannel to an AioContext, the TLS channel should
76daa3
be used, not the underlying socket channel.  This is because, trivially,
76daa3
the TLS channel will be the one that we read/write to and thus the one
76daa3
that will get the qio_channel_yield() call.
76daa3
76daa3
Fixes: ff82911cd3f69f028f2537825c9720ff78bc3f19
76daa3
Cc: qemu-stable@nongnu.org
76daa3
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
76daa3
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
76daa3
Tested-by: Daniel P. Berrange <berrange@redhat.com>
76daa3
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
76daa3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
---
76daa3
 block/nbd-client.c | 4 ++--
76daa3
 1 file changed, 2 insertions(+), 2 deletions(-)
76daa3
76daa3
diff --git a/block/nbd-client.c b/block/nbd-client.c
76daa3
index 43e0292..282679b 100644
76daa3
--- a/block/nbd-client.c
76daa3
+++ b/block/nbd-client.c
76daa3
@@ -340,14 +340,14 @@ int nbd_client_co_pdiscard(BlockDriverState *bs, int64_t offset, int count)
76daa3
 void nbd_client_detach_aio_context(BlockDriverState *bs)
76daa3
 {
76daa3
     NBDClientSession *client = nbd_get_client_session(bs);
76daa3
-    qio_channel_detach_aio_context(QIO_CHANNEL(client->sioc));
76daa3
+    qio_channel_detach_aio_context(QIO_CHANNEL(client->ioc));
76daa3
 }
76daa3
 
76daa3
 void nbd_client_attach_aio_context(BlockDriverState *bs,
76daa3
                                    AioContext *new_context)
76daa3
 {
76daa3
     NBDClientSession *client = nbd_get_client_session(bs);
76daa3
-    qio_channel_attach_aio_context(QIO_CHANNEL(client->sioc), new_context);
76daa3
+    qio_channel_attach_aio_context(QIO_CHANNEL(client->ioc), new_context);
76daa3
     aio_co_schedule(new_context, client->read_reply_co);
76daa3
 }
76daa3
 
76daa3
-- 
76daa3
1.8.3.1
76daa3