[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/7] block/nbd: assert attach/detach runs in the proper context
From: |
Roman Kagan |
Subject: |
[PATCH 3/7] block/nbd: assert attach/detach runs in the proper context |
Date: |
Mon, 15 Mar 2021 09:06:07 +0300 |
Document (via a comment and an assert) that
nbd_client_detach_aio_context and nbd_client_attach_aio_context_bh run
in the desired aio_context.
Signed-off-by: Roman Kagan <rvkagan@yandex-team.ru>
---
block/nbd.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/block/nbd.c b/block/nbd.c
index 1d8edb5b21..658b827d24 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -241,6 +241,12 @@ static void nbd_client_detach_aio_context(BlockDriverState
*bs)
{
BDRVNBDState *s = (BDRVNBDState *)bs->opaque;
+ /*
+ * This runs in the (old, about to be detached) aio context of the @bs so
+ * accessing the stuff on @s is concurrency-free.
+ */
+ assert(qemu_get_current_aio_context() == bdrv_get_aio_context(bs));
+
/* Timer is deleted in nbd_client_co_drain_begin() */
assert(!s->reconnect_delay_timer);
/*
@@ -258,6 +264,12 @@ static void nbd_client_attach_aio_context_bh(void *opaque)
BlockDriverState *bs = opaque;
BDRVNBDState *s = (BDRVNBDState *)bs->opaque;
+ /*
+ * This runs in the (new, just attached) aio context of the @bs so
+ * accessing the stuff on @s is concurrency-free.
+ */
+ assert(qemu_get_current_aio_context() == bdrv_get_aio_context(bs));
+
if (s->connection_co) {
/*
* The node is still drained, so we know the coroutine has yielded in
--
2.30.2
- Re: [PATCH 1/7] block/nbd: avoid touching freed connect_thread, (continued)
[PATCH 3/7] block/nbd: assert attach/detach runs in the proper context,
Roman Kagan <=
[PATCH 7/7] block/nbd: stop manipulating in_flight counter, Roman Kagan, 2021/03/15
Re: [PATCH 0/7] block/nbd: decouple reconnect from drain, Vladimir Sementsov-Ogievskiy, 2021/03/15
Re: [PATCH 0/7] block/nbd: decouple reconnect from drain, Eric Blake, 2021/03/16