block/nbd: make nbd_co_establish_connection_cancel() bs-independent

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>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2021-06-10 13:07:43 +03:00 committed by Eric Blake
parent d33833d7af
commit c3e7730485
1 changed files with 9 additions and 8 deletions

View File

@ -132,7 +132,7 @@ static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *saddr,
Error **errp); Error **errp);
static coroutine_fn QIOChannelSocket * static coroutine_fn QIOChannelSocket *
nbd_co_establish_connection(NBDConnectThread *thr, Error **errp); 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 int nbd_client_handshake(BlockDriverState *bs, Error **errp);
static void nbd_yank(void *opaque); static void nbd_yank(void *opaque);
@ -295,7 +295,7 @@ static void coroutine_fn nbd_client_co_drain_begin(BlockDriverState *bs)
s->drained = true; s->drained = true;
qemu_co_sleep_wake(&s->reconnect_sleep); 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); reconnect_delay_timer_del(s);
@ -333,7 +333,7 @@ static void nbd_teardown_connection(BlockDriverState *bs)
s->state = NBD_CLIENT_QUIT; s->state = NBD_CLIENT_QUIT;
if (s->connection_co) { if (s->connection_co) {
qemu_co_sleep_wake(&s->reconnect_sleep); 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()) { if (qemu_in_coroutine()) {
s->teardown_co = qemu_coroutine_self(); s->teardown_co = qemu_coroutine_self();
@ -488,13 +488,14 @@ nbd_co_establish_connection(NBDConnectThread *thr, Error **errp)
/* /*
* nbd_co_establish_connection_cancel * nbd_co_establish_connection_cancel
* Cancel nbd_co_establish_connection asynchronously: it will finish soon, to * Cancel nbd_co_establish_connection() asynchronously.
* allow drained section to begin. *
* 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; Coroutine *wait_co;
qemu_mutex_lock(&thr->mutex); qemu_mutex_lock(&thr->mutex);