[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 15/34] block/nbd: make nbd_co_establish_connection_cancel() bs-ind
From: |
Eric Blake |
Subject: |
[PULL 15/34] block/nbd: make nbd_co_establish_connection_cancel() bs-independent |
Date: |
Tue, 15 Jun 2021 15:47:37 -0500 |
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
nbd_co_establish_connection_cancel() actually needs only pointer to
NBDConnectThread. So, make it clean.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Roman Kagan <rvkagan@yandex-team.ru>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20210610100802.5888-14-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
---
block/nbd.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/block/nbd.c b/block/nbd.c
index 15b569a899fd..bee615e5c4c1 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -132,7 +132,7 @@ static int nbd_establish_connection(BlockDriverState *bs,
SocketAddress *saddr,
Error **errp);
static coroutine_fn QIOChannelSocket *
nbd_co_establish_connection(NBDConnectThread *thr, Error **errp);
-static void nbd_co_establish_connection_cancel(BlockDriverState *bs);
+static void nbd_co_establish_connection_cancel(NBDConnectThread *thr);
static int nbd_client_handshake(BlockDriverState *bs, Error **errp);
static void nbd_yank(void *opaque);
@@ -295,7 +295,7 @@ static void coroutine_fn
nbd_client_co_drain_begin(BlockDriverState *bs)
s->drained = true;
qemu_co_sleep_wake(&s->reconnect_sleep);
- nbd_co_establish_connection_cancel(bs);
+ nbd_co_establish_connection_cancel(s->connect_thread);
reconnect_delay_timer_del(s);
@@ -333,7 +333,7 @@ static void nbd_teardown_connection(BlockDriverState *bs)
s->state = NBD_CLIENT_QUIT;
if (s->connection_co) {
qemu_co_sleep_wake(&s->reconnect_sleep);
- nbd_co_establish_connection_cancel(bs);
+ nbd_co_establish_connection_cancel(s->connect_thread);
}
if (qemu_in_coroutine()) {
s->teardown_co = qemu_coroutine_self();
@@ -488,13 +488,14 @@ nbd_co_establish_connection(NBDConnectThread *thr, Error
**errp)
/*
* nbd_co_establish_connection_cancel
- * Cancel nbd_co_establish_connection asynchronously: it will finish soon, to
- * allow drained section to begin.
+ * Cancel nbd_co_establish_connection() asynchronously.
+ *
+ * Note that this function neither directly stops the thread nor closes the
+ * socket, but rather safely wakes nbd_co_establish_connection() which is
+ * sleeping in yield()
*/
-static void nbd_co_establish_connection_cancel(BlockDriverState *bs)
+static void nbd_co_establish_connection_cancel(NBDConnectThread *thr)
{
- BDRVNBDState *s = bs->opaque;
- NBDConnectThread *thr = s->connect_thread;
Coroutine *wait_co;
qemu_mutex_lock(&thr->mutex);
--
2.31.1
- [PULL 05/34] block/nbd: fix how state is cleared on nbd_open() failure paths, (continued)
- [PULL 05/34] block/nbd: fix how state is cleared on nbd_open() failure paths, Eric Blake, 2021/06/15
- [PULL 07/34] qemu-sockets: introduce socket_address_parse_named_fd(), Eric Blake, 2021/06/15
- [PULL 06/34] block/nbd: connect_thread_func(): do qio_channel_set_delay(false), Eric Blake, 2021/06/15
- [PULL 10/34] block/nbd: nbd_client_handshake(): fix leak of s->ioc, Eric Blake, 2021/06/15
- [PULL 09/34] block/nbd: ensure ->connection_thread is always valid, Eric Blake, 2021/06/15
- [PULL 08/34] block/nbd: call socket_address_parse_named_fd() in advance, Eric Blake, 2021/06/15
- [PULL 11/34] block/nbd: BDRVNBDState: drop unused connect_err and connect_status, Eric Blake, 2021/06/15
- [PULL 12/34] block/nbd: simplify waking of nbd_co_establish_connection(), Eric Blake, 2021/06/15
- [PULL 13/34] block/nbd: drop thr->state, Eric Blake, 2021/06/15
- [PULL 14/34] block/nbd: bs-independent interface for nbd_co_establish_connection(), Eric Blake, 2021/06/15
- [PULL 15/34] block/nbd: make nbd_co_establish_connection_cancel() bs-independent,
Eric Blake <=
- [PULL 17/34] block/nbd: introduce nbd_client_connection_new(), Eric Blake, 2021/06/15
- [PULL 18/34] block/nbd: introduce nbd_client_connection_release(), Eric Blake, 2021/06/15
- [PULL 16/34] block/nbd: rename NBDConnectThread to NBDClientConnection, Eric Blake, 2021/06/15
- [PULL 22/34] nbd/client-connection: implement connection retry, Eric Blake, 2021/06/15
- [PULL 20/34] nbd/client-connection: use QEMU_LOCK_GUARD, Eric Blake, 2021/06/15
- [PULL 21/34] nbd/client-connection: add possibility of negotiation, Eric Blake, 2021/06/15
- [PULL 19/34] nbd: move connection code from block/nbd to nbd/client-connection, Eric Blake, 2021/06/15
- [PULL 23/34] nbd/client-connection: shutdown connection on release, Eric Blake, 2021/06/15
- [PULL 25/34] block/nbd: use negotiation of NBDClientConnection, Eric Blake, 2021/06/15
- [PULL 26/34] block/nbd: don't touch s->sioc in nbd_teardown_connection(), Eric Blake, 2021/06/15