mirror of https://github.com/xemu-project/xemu.git
test-block-iothread: Lock AioContext for blk_insert_bs()
blk_insert_bs() requires that callers hold the AioContext lock for the node that should be inserted. Take it. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-ID: <20230605085711.21261-4-kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
415275aed9
commit
2065cf6b23
|
@ -825,6 +825,7 @@ static void test_attach_second_node(void)
|
||||||
BlockDriverState *bs, *filter;
|
BlockDriverState *bs, *filter;
|
||||||
QDict *options;
|
QDict *options;
|
||||||
|
|
||||||
|
aio_context_acquire(main_ctx);
|
||||||
blk = blk_new(ctx, BLK_PERM_ALL, BLK_PERM_ALL);
|
blk = blk_new(ctx, BLK_PERM_ALL, BLK_PERM_ALL);
|
||||||
bs = bdrv_new_open_driver(&bdrv_test, "base", BDRV_O_RDWR, &error_abort);
|
bs = bdrv_new_open_driver(&bdrv_test, "base", BDRV_O_RDWR, &error_abort);
|
||||||
blk_insert_bs(blk, bs, &error_abort);
|
blk_insert_bs(blk, bs, &error_abort);
|
||||||
|
@ -833,7 +834,6 @@ static void test_attach_second_node(void)
|
||||||
qdict_put_str(options, "driver", "raw");
|
qdict_put_str(options, "driver", "raw");
|
||||||
qdict_put_str(options, "file", "base");
|
qdict_put_str(options, "file", "base");
|
||||||
|
|
||||||
aio_context_acquire(main_ctx);
|
|
||||||
filter = bdrv_open(NULL, NULL, options, BDRV_O_RDWR, &error_abort);
|
filter = bdrv_open(NULL, NULL, options, BDRV_O_RDWR, &error_abort);
|
||||||
aio_context_release(main_ctx);
|
aio_context_release(main_ctx);
|
||||||
|
|
||||||
|
@ -857,9 +857,11 @@ static void test_attach_preserve_blk_ctx(void)
|
||||||
{
|
{
|
||||||
IOThread *iothread = iothread_new();
|
IOThread *iothread = iothread_new();
|
||||||
AioContext *ctx = iothread_get_aio_context(iothread);
|
AioContext *ctx = iothread_get_aio_context(iothread);
|
||||||
|
AioContext *main_ctx = qemu_get_aio_context();
|
||||||
BlockBackend *blk;
|
BlockBackend *blk;
|
||||||
BlockDriverState *bs;
|
BlockDriverState *bs;
|
||||||
|
|
||||||
|
aio_context_acquire(main_ctx);
|
||||||
blk = blk_new(ctx, BLK_PERM_ALL, BLK_PERM_ALL);
|
blk = blk_new(ctx, BLK_PERM_ALL, BLK_PERM_ALL);
|
||||||
bs = bdrv_new_open_driver(&bdrv_test, "base", BDRV_O_RDWR, &error_abort);
|
bs = bdrv_new_open_driver(&bdrv_test, "base", BDRV_O_RDWR, &error_abort);
|
||||||
bs->total_sectors = 65536 / BDRV_SECTOR_SIZE;
|
bs->total_sectors = 65536 / BDRV_SECTOR_SIZE;
|
||||||
|
@ -868,6 +870,7 @@ static void test_attach_preserve_blk_ctx(void)
|
||||||
blk_insert_bs(blk, bs, &error_abort);
|
blk_insert_bs(blk, bs, &error_abort);
|
||||||
g_assert(blk_get_aio_context(blk) == ctx);
|
g_assert(blk_get_aio_context(blk) == ctx);
|
||||||
g_assert(bdrv_get_aio_context(bs) == ctx);
|
g_assert(bdrv_get_aio_context(bs) == ctx);
|
||||||
|
aio_context_release(main_ctx);
|
||||||
|
|
||||||
/* Remove the node again */
|
/* Remove the node again */
|
||||||
aio_context_acquire(ctx);
|
aio_context_acquire(ctx);
|
||||||
|
@ -877,7 +880,9 @@ static void test_attach_preserve_blk_ctx(void)
|
||||||
g_assert(bdrv_get_aio_context(bs) == qemu_get_aio_context());
|
g_assert(bdrv_get_aio_context(bs) == qemu_get_aio_context());
|
||||||
|
|
||||||
/* Re-attach the node */
|
/* Re-attach the node */
|
||||||
|
aio_context_acquire(main_ctx);
|
||||||
blk_insert_bs(blk, bs, &error_abort);
|
blk_insert_bs(blk, bs, &error_abort);
|
||||||
|
aio_context_release(main_ctx);
|
||||||
g_assert(blk_get_aio_context(blk) == ctx);
|
g_assert(blk_get_aio_context(blk) == ctx);
|
||||||
g_assert(bdrv_get_aio_context(bs) == ctx);
|
g_assert(bdrv_get_aio_context(bs) == ctx);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue