[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 09/15] block: Move node without parents to main AioC
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 09/15] block: Move node without parents to main AioContext |
Date: |
Thu, 23 May 2019 18:00:58 +0200 |
A node should only be in a non-default AioContext if a user is attached
to it that requires this. When the last parent of a node is gone, it can
move back to the main AioContext.
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 4 ++++
tests/test-bdrv-drain.c | 2 +-
tests/test-block-iothread.c | 3 +--
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/block.c b/block.c
index 5219f61279..19268f52f8 100644
--- a/block.c
+++ b/block.c
@@ -2235,6 +2235,10 @@ static void bdrv_replace_child(BdrvChild *child,
BlockDriverState *new_bs)
bdrv_get_cumulative_perm(old_bs, &perm, &shared_perm);
bdrv_check_perm(old_bs, NULL, perm, shared_perm, NULL, &error_abort);
bdrv_set_perm(old_bs, perm, shared_perm);
+
+ /* When the parent requiring a non-default AioContext is removed, the
+ * node moves back to the main AioContext */
+ bdrv_try_set_aio_context(old_bs, qemu_get_aio_context(), NULL);
}
if (new_bs) {
diff --git a/tests/test-bdrv-drain.c b/tests/test-bdrv-drain.c
index 447f6d12eb..2ff04db07a 100644
--- a/tests/test-bdrv-drain.c
+++ b/tests/test-bdrv-drain.c
@@ -1003,7 +1003,7 @@ static void test_blockjob_common_drain_node(enum
drain_type drain_type,
if (use_iothread) {
blk_set_aio_context(blk_src, qemu_get_aio_context(), &error_abort);
- blk_set_aio_context(blk_target, qemu_get_aio_context(), &error_abort);
+ assert(blk_get_aio_context(blk_target) == qemu_get_aio_context());
}
aio_context_release(ctx);
diff --git a/tests/test-block-iothread.c b/tests/test-block-iothread.c
index f41082e3bd..79d9cf8a57 100644
--- a/tests/test-block-iothread.c
+++ b/tests/test-block-iothread.c
@@ -713,9 +713,8 @@ static void test_attach_preserve_blk_ctx(void)
/* Remove the node again */
blk_remove_bs(blk);
- /* TODO bs should move back to main context here */
g_assert(blk_get_aio_context(blk) == ctx);
- g_assert(bdrv_get_aio_context(bs) == ctx);
+ g_assert(bdrv_get_aio_context(bs) == qemu_get_aio_context());
/* Re-attach the node */
blk_insert_bs(blk, bs, &error_abort);
--
2.20.1
- [Qemu-devel] [PATCH 00/15] block: AioContext management, part 2, Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 09/15] block: Move node without parents to main AioContext,
Kevin Wolf <=
- [Qemu-devel] [PATCH 02/15] block: Add Error to blk_set_aio_context(), Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 10/15] blockdev: Use bdrv_try_set_aio_context() for monitor commands, Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 06/15] block: Adjust AioContexts when attaching nodes, Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 05/15] scsi-disk: Use qdev_prop_drive_iothread, Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 14/15] test-bdrv-drain: Use bdrv_try_set_aio_context(), Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 11/15] block: Remove wrong bdrv_set_aio_context() calls, Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 01/15] test-block-iothread: Check filter node in test_propagate_mirror, Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 12/15] virtio-scsi-test: Test attaching new overlay with iothreads, Kevin Wolf, 2019/05/23
- [Qemu-devel] [PATCH 13/15] iotests: Attach new devices to node in non-default iothread, Kevin Wolf, 2019/05/23