13.06.2019 1:09, Max Reitz wrote:
> bdrv_has_zero_init() and the related bdrv_unallocated_blocks_are_zero()
> should use bdrv_filtered_cow_child() if they want to check whether the
> given BDS has a COW backing file.
>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
> block.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/block.c b/block.c
> index be18130944..64d6190984 100644
> --- a/block.c
> +++ b/block.c
> @@ -4933,7 +4933,7 @@ int bdrv_has_zero_init(BlockDriverState *bs)
>
> /* If BS is a copy on write image, it is initialized to
> the contents of the base image, which may not be zeroes. */
> - if (bs->backing) {
> + if (bdrv_filtered_cow_child(bs)) {
> return 0;
> }
Hmm, if you are fixing bdrv_has_zero_init around filters, I'd prefere to fix the whole
function, converting the following here too:
if (bs->file && bs->drv->is_filter) {
return bdrv_has_zero_init(bs->file->bs);
}
But it's not a real problem:
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> if (bs->drv->bdrv_has_zero_init) {
> @@ -4951,7 +4951,7 @@ bool bdrv_unallocated_blocks_are_zero(BlockDriverState *bs)
> {
> BlockDriverInfo bdi;
>
> - if (bs->backing) {
> + if (bdrv_filtered_cow_child(bs)) {
> return false;
> }
>
>
--
Best regards,
Vladimir