Message ID | 20210902103805.25686-2-vsementsov@virtuozzo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block/nbd: drop connection_co | expand |
On Thu, Sep 02, 2021 at 01:38:01PM +0300, Vladimir Sementsov-Ogievskiy wrote: > Don't rely on connection being totally broken in case of -EIO. More > safe and correct just shutdown the channel anyway, as we change the > state and going to reconnect. If you don't mind me tweaking grammar, I propose: 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> > --- > block/nbd.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/block/nbd.c b/block/nbd.c > index f6ff1c4fb4..d88f4b954c 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.29.2 >
diff --git a/block/nbd.c b/block/nbd.c index f6ff1c4fb4..d88f4b954c 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; } }