block.c (d874bc081600528f0400977460b4f98f21e156a1) block.c (fb62b5889695825ea22f29d4eadb9ac1b8935a71)
1/*
2 * QEMU System Emulator block driver
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 * Copyright (c) 2020 Virtuozzo International GmbH.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal

--- 1398 unchanged lines hidden (view full) ---

1407 const char *filename, Error **errp)
1408{
1409 if (c->role & BDRV_CHILD_COW) {
1410 return bdrv_backing_update_filename(c, base, filename, errp);
1411 }
1412 return 0;
1413}
1414
1/*
2 * QEMU System Emulator block driver
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 * Copyright (c) 2020 Virtuozzo International GmbH.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal

--- 1398 unchanged lines hidden (view full) ---

1407 const char *filename, Error **errp)
1408{
1409 if (c->role & BDRV_CHILD_COW) {
1410 return bdrv_backing_update_filename(c, base, filename, errp);
1411 }
1412 return 0;
1413}
1414
1415static AioContext *bdrv_child_cb_get_parent_aio_context(BdrvChild *c)
1415AioContext *child_of_bds_get_parent_aio_context(BdrvChild *c)
1416{
1417 BlockDriverState *bs = c->opaque;
1418
1419 return bdrv_get_aio_context(bs);
1420}
1421
1422const BdrvChildClass child_of_bds = {
1423 .parent_is_bds = true,
1424 .get_parent_desc = bdrv_child_get_parent_desc,
1425 .inherit_options = bdrv_inherited_options,
1426 .drained_begin = bdrv_child_cb_drained_begin,
1427 .drained_poll = bdrv_child_cb_drained_poll,
1428 .drained_end = bdrv_child_cb_drained_end,
1429 .attach = bdrv_child_cb_attach,
1430 .detach = bdrv_child_cb_detach,
1431 .inactivate = bdrv_child_cb_inactivate,
1432 .can_set_aio_ctx = bdrv_child_cb_can_set_aio_ctx,
1433 .set_aio_ctx = bdrv_child_cb_set_aio_ctx,
1434 .update_filename = bdrv_child_cb_update_filename,
1416{
1417 BlockDriverState *bs = c->opaque;
1418
1419 return bdrv_get_aio_context(bs);
1420}
1421
1422const BdrvChildClass child_of_bds = {
1423 .parent_is_bds = true,
1424 .get_parent_desc = bdrv_child_get_parent_desc,
1425 .inherit_options = bdrv_inherited_options,
1426 .drained_begin = bdrv_child_cb_drained_begin,
1427 .drained_poll = bdrv_child_cb_drained_poll,
1428 .drained_end = bdrv_child_cb_drained_end,
1429 .attach = bdrv_child_cb_attach,
1430 .detach = bdrv_child_cb_detach,
1431 .inactivate = bdrv_child_cb_inactivate,
1432 .can_set_aio_ctx = bdrv_child_cb_can_set_aio_ctx,
1433 .set_aio_ctx = bdrv_child_cb_set_aio_ctx,
1434 .update_filename = bdrv_child_cb_update_filename,
1435 .get_parent_aio_context = bdrv_child_cb_get_parent_aio_context,
1435 .get_parent_aio_context = child_of_bds_get_parent_aio_context,
1436};
1437
1438AioContext *bdrv_child_get_parent_aio_context(BdrvChild *c)
1439{
1440 return c->klass->get_parent_aio_context(c);
1441}
1442
1443static int bdrv_open_flags(BlockDriverState *bs, int flags)

--- 6133 unchanged lines hidden ---
1436};
1437
1438AioContext *bdrv_child_get_parent_aio_context(BdrvChild *c)
1439{
1440 return c->klass->get_parent_aio_context(c);
1441}
1442
1443static int bdrv_open_flags(BlockDriverState *bs, int flags)

--- 6133 unchanged lines hidden ---