- allow drive-mirror to create sprase mirror on images like qcow2 - allow qemu-img map to work as expected on quorum driver
Cc: Benoit Canet <ben...@irqsave.net> Cc: Kevin Wolf <kw...@redhat.com> Cc: Stefan Hajnoczi <stefa...@redhat.com> Signed-off-by: Liu Yuan <namei.u...@gmail.com> --- block/quorum.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/block/quorum.c b/block/quorum.c index ebf5c71..f0d0a98 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -780,6 +780,21 @@ static coroutine_fn int quorum_co_flush(BlockDriverState *bs) return result; } +static int64_t coroutine_fn quorum_co_get_block_status(BlockDriverState *bs, + int64_t sector_num, + int nb_sectors, + int *pnum) +{ + BDRVQuorumState *s = bs->opaque; + BlockDriverState *child_bs = s->bs[0]; + + if (child_bs->drv->bdrv_co_get_block_status) + return child_bs->drv->bdrv_co_get_block_status(child_bs, sector_num, + nb_sectors, pnum); + + return bdrv_get_block_status(child_bs, sector_num, nb_sectors, pnum); +} + static bool quorum_recurse_is_first_non_filter(BlockDriverState *bs, BlockDriverState *candidate) { @@ -1038,6 +1053,7 @@ static BlockDriver bdrv_quorum = { .bdrv_close = quorum_close, .bdrv_co_flush_to_disk = quorum_co_flush, + .bdrv_co_get_block_status = quorum_co_get_block_status, .bdrv_getlength = quorum_getlength, -- 1.9.1