From: Klim Kireev <klim.kir...@virtuozzo.com> This commit adds bdrv_co_readv, bdrv_co_writev, and bdrv_co_flush_to_os implementation. It merely passes these functions down to top BlockDriverState in the snapshot chain.
Signed-off-by: Klim Kireev <klim.kir...@virtuozzo.com> Signed-off-by: Edgar Kaziakhmedov <edgar.kaziakhme...@virtuozzo.com> Reviewed-by: Vladimir Sementsov-Ogievskiy<vsement...@virtuozzo.com> --- block/prl-xml.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/block/prl-xml.c b/block/prl-xml.c index fa9c4fd5fa..5ab32bb6ab 100644 --- a/block/prl-xml.c +++ b/block/prl-xml.c @@ -467,6 +467,22 @@ fail: return ret; } +static coroutine_fn int +prl_co_readv(BlockDriverState *bs, int64_t sector_num, + int nb_sectors, QEMUIOVector *qiov) +{ + BDRVPrlXmlState *s = bs->opaque; + return bdrv_co_readv(s->image, sector_num, nb_sectors, qiov); +} + +static coroutine_fn int +prl_co_writev(BlockDriverState *bs, int64_t sector_num, + int nb_sectors, QEMUIOVector *qiov) +{ + BDRVPrlXmlState *s = bs->opaque; + return bdrv_co_writev(s->image, sector_num, nb_sectors, qiov); +} + static void prl_close_xml(BlockDriverState *bs) { BDRVPrlXmlState *s = bs->opaque; @@ -474,11 +490,20 @@ static void prl_close_xml(BlockDriverState *bs) xmlFreeDoc(s->xml); } +static coroutine_fn int prl_co_flush_to_os(BlockDriverState *bs) +{ + BDRVPrlXmlState *s = bs->opaque; + return bdrv_co_flush(s->image->bs); +} + static BlockDriver bdrv_prl_xml = { .format_name = "prl-xml", .instance_size = sizeof(BDRVPrlXmlState), .bdrv_open = prl_open_xml, + .bdrv_co_readv = prl_co_readv, + .bdrv_co_writev = prl_co_writev, .bdrv_close = prl_close_xml, + .bdrv_co_flush_to_os = prl_co_flush_to_os, .create_opts = &prl_xml_create_opts, .bdrv_child_perm = bdrv_filter_default_perms, .is_filter = true -- 2.21.3