mirror of https://github.com/xemu-project/xemu.git
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:
parent
d33833d7af
commit
c3e7730485
17
block/nbd.c
17
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);
|
||||
|
|
Loading…
Reference in New Issue