diff options
-rw-r--r-- | block.c | 4 | ||||
-rw-r--r-- | tests/test-bdrv-drain.c | 2 | ||||
-rw-r--r-- | tests/test-block-iothread.c | 3 |
3 files changed, 6 insertions, 3 deletions
@@ -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 16ea2b8..44e658b 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 f41082e..79d9cf8 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); |