[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 07/10] block/nbd: make nbd_co_establish_connection_cancel() bs
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v2 07/10] block/nbd: make nbd_co_establish_connection_cancel() bs-independent |
Date: |
Thu, 8 Apr 2021 17:08:24 +0300 |
nbd_co_establish_connection_cancel() actually needs only pointer to
NBDConnectThread. So, make it clean.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
block/nbd.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/block/nbd.c b/block/nbd.c
index a487fd1e68..ebbb0bec6a 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -124,7 +124,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);
@@ -271,7 +271,7 @@ static void coroutine_fn
nbd_client_co_drain_begin(BlockDriverState *bs)
qemu_co_sleep_wake(s->connection_co_sleep_ns_state);
}
- nbd_co_establish_connection_cancel(bs);
+ nbd_co_establish_connection_cancel(s->connect_thread);
reconnect_delay_timer_del(s);
@@ -311,7 +311,7 @@ static void nbd_teardown_connection(BlockDriverState *bs)
if (s->connection_co_sleep_ns_state) {
qemu_co_sleep_wake(s->connection_co_sleep_ns_state);
}
- nbd_co_establish_connection_cancel(bs);
+ nbd_co_establish_connection_cancel(s->connect_thread);
}
if (qemu_in_coroutine()) {
s->teardown_co = qemu_coroutine_self();
@@ -461,14 +461,12 @@ 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 it doesn't
+ * stop the thread itself neither close the socket. It just safely wakes
+ * nbd_co_establish_connection() sleeping in the 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;
-
qemu_mutex_lock(&thr->mutex);
if (thr->wait_co) {
--
2.29.2
- [PATCH v2 04/10] block/nbd: simplify waking of nbd_co_establish_connection(), (continued)
- [PATCH v2 04/10] block/nbd: simplify waking of nbd_co_establish_connection(), Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 01/10] block/nbd: introduce NBDConnectThread reference counter, Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 08/10] block/nbd: rename NBDConnectThread to NBDClientConnection, Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 05/10] block/nbd: drop thr->state, Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 02/10] block/nbd: BDRVNBDState: drop unused connect_err and connect_status, Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 07/10] block/nbd: make nbd_co_establish_connection_cancel() bs-independent,
Vladimir Sementsov-Ogievskiy <=
- [PATCH v2 09/10] block/nbd: introduce nbd_client_connection_new(), Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 10/10] nbd: move connection code from block/nbd to nbd/client-connection, Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 06/10] block/nbd: bs-independent interface for nbd_co_establish_connection(), Vladimir Sementsov-Ogievskiy, 2021/04/08
- [PATCH v2 03/10] util/async: aio_co_enter(): do aio_co_schedule in general case, Vladimir Sementsov-Ogievskiy, 2021/04/08