[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 15/20] block/nbd: nbd_channel_error() shutdown channel uncondition
From: |
Eric Blake |
Subject: |
[PULL 15/20] block/nbd: nbd_channel_error() shutdown channel unconditionally |
Date: |
Mon, 27 Sep 2021 16:55:40 -0500 |
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Don't rely on connection being totally broken in case of -EIO. Safer
and more correct is to just shut down the channel anyway, since we
change the state and plan on reconnecting.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20210902103805.25686-2-vsementsov@virtuozzo.com>
[eblake: grammar tweaks]
Signed-off-by: Eric Blake <eblake@redhat.com>
---
block/nbd.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/block/nbd.c b/block/nbd.c
index a66b2c282dc3..de59e76378ab 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -129,15 +129,16 @@ static bool nbd_client_connected(BDRVNBDState *s)
static void nbd_channel_error(BDRVNBDState *s, int ret)
{
+ if (nbd_client_connected(s)) {
+ qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL);
+ }
+
if (ret == -EIO) {
if (nbd_client_connected(s)) {
s->state = s->reconnect_delay ? NBD_CLIENT_CONNECTING_WAIT :
NBD_CLIENT_CONNECTING_NOWAIT;
}
} else {
- if (nbd_client_connected(s)) {
- qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL);
- }
s->state = NBD_CLIENT_QUIT;
}
}
--
2.31.1
- [PULL 03/20] qcow2: check request on vmstate save/load path, (continued)
- [PULL 03/20] qcow2: check request on vmstate save/load path, Eric Blake, 2021/09/27
- [PULL 05/20] block: use int64_t instead of uint64_t in driver write handlers, Eric Blake, 2021/09/27
- [PULL 06/20] block: use int64_t instead of uint64_t in copy_range driver handlers, Eric Blake, 2021/09/27
- [PULL 10/20] block: make BlockLimits::max_pdiscard 64bit, Eric Blake, 2021/09/27
- [PULL 11/20] block: use int64_t instead of int in driver discard handlers, Eric Blake, 2021/09/27
- [PULL 04/20] block: use int64_t instead of uint64_t in driver read handlers, Eric Blake, 2021/09/27
- [PULL 07/20] block: make BlockLimits::max_pwrite_zeroes 64bit, Eric Blake, 2021/09/27
- [PULL 09/20] block/io: allow 64bit write-zeroes requests, Eric Blake, 2021/09/27
- [PULL 12/20] block/io: allow 64bit discard requests, Eric Blake, 2021/09/27
- [PULL 13/20] nbd/server: Allow LIST_META_CONTEXT without STRUCTURED_REPLY, Eric Blake, 2021/09/27
- [PULL 15/20] block/nbd: nbd_channel_error() shutdown channel unconditionally,
Eric Blake <=
- [PULL 18/20] block/nbd: drop connection_co, Eric Blake, 2021/09/27
- [PULL 17/20] block/nbd: refactor nbd_recv_coroutines_wake_all(), Eric Blake, 2021/09/27
- [PULL 08/20] block: use int64_t instead of int in driver write_zeroes handlers, Eric Blake, 2021/09/27
- [PULL 14/20] nbd/client-connection: nbd_co_establish_connection(): fix non set errp, Eric Blake, 2021/09/27
- [PULL 16/20] block/nbd: move nbd_recv_coroutines_wake_all() up, Eric Blake, 2021/09/27
- [PULL 19/20] block/nbd: check that received handle is valid, Eric Blake, 2021/09/27
- [PULL 20/20] nbd/server: Add --selinux-label option, Eric Blake, 2021/09/27
- Re: [PULL 00/20] NBD patches through 2021-09-27, Peter Maydell, 2021/09/29