mirror of https://github.com/xemu-project/xemu.git
test-bdrv-drain: Test bdrv_append() to drained node
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
4be6a6d118
commit
b994c5bc51
|
@ -1250,6 +1250,47 @@ static void test_detach_by_driver_cb(void)
|
||||||
test_detach_indirect(false);
|
test_detach_indirect(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_append_to_drained(void)
|
||||||
|
{
|
||||||
|
BlockBackend *blk;
|
||||||
|
BlockDriverState *base, *overlay;
|
||||||
|
BDRVTestState *base_s, *overlay_s;
|
||||||
|
|
||||||
|
blk = blk_new(BLK_PERM_ALL, BLK_PERM_ALL);
|
||||||
|
base = bdrv_new_open_driver(&bdrv_test, "base", BDRV_O_RDWR, &error_abort);
|
||||||
|
base_s = base->opaque;
|
||||||
|
blk_insert_bs(blk, base, &error_abort);
|
||||||
|
|
||||||
|
overlay = bdrv_new_open_driver(&bdrv_test, "overlay", BDRV_O_RDWR,
|
||||||
|
&error_abort);
|
||||||
|
overlay_s = overlay->opaque;
|
||||||
|
|
||||||
|
do_drain_begin(BDRV_DRAIN, base);
|
||||||
|
g_assert_cmpint(base->quiesce_counter, ==, 1);
|
||||||
|
g_assert_cmpint(base_s->drain_count, ==, 1);
|
||||||
|
g_assert_cmpint(base->in_flight, ==, 0);
|
||||||
|
|
||||||
|
/* Takes ownership of overlay, so we don't have to unref it later */
|
||||||
|
bdrv_append(overlay, base, &error_abort);
|
||||||
|
g_assert_cmpint(base->in_flight, ==, 0);
|
||||||
|
g_assert_cmpint(overlay->in_flight, ==, 0);
|
||||||
|
|
||||||
|
g_assert_cmpint(base->quiesce_counter, ==, 1);
|
||||||
|
g_assert_cmpint(base_s->drain_count, ==, 1);
|
||||||
|
g_assert_cmpint(overlay->quiesce_counter, ==, 1);
|
||||||
|
g_assert_cmpint(overlay_s->drain_count, ==, 1);
|
||||||
|
|
||||||
|
do_drain_end(BDRV_DRAIN, base);
|
||||||
|
|
||||||
|
g_assert_cmpint(base->quiesce_counter, ==, 0);
|
||||||
|
g_assert_cmpint(base_s->drain_count, ==, 0);
|
||||||
|
g_assert_cmpint(overlay->quiesce_counter, ==, 0);
|
||||||
|
g_assert_cmpint(overlay_s->drain_count, ==, 0);
|
||||||
|
|
||||||
|
bdrv_unref(base);
|
||||||
|
blk_unref(blk);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -1308,6 +1349,8 @@ int main(int argc, char **argv)
|
||||||
g_test_add_func("/bdrv-drain/detach/parent_cb", test_detach_by_parent_cb);
|
g_test_add_func("/bdrv-drain/detach/parent_cb", test_detach_by_parent_cb);
|
||||||
g_test_add_func("/bdrv-drain/detach/driver_cb", test_detach_by_driver_cb);
|
g_test_add_func("/bdrv-drain/detach/driver_cb", test_detach_by_driver_cb);
|
||||||
|
|
||||||
|
g_test_add_func("/bdrv-drain/attach/drain", test_append_to_drained);
|
||||||
|
|
||||||
ret = g_test_run();
|
ret = g_test_run();
|
||||||
qemu_event_destroy(&done_event);
|
qemu_event_destroy(&done_event);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue