Am 12.01.2010 19:13, schrieb Christoph Hellwig:
> The backing device is only modified from bdrv_commit.  So instead of
> flushing it every time bdrv_flush is called for the front-end device
> only flush it after we're written data to it in bdrv_commit.
> 
> Also flush the frontend image if we have a make_empty method that
> possibly writes to it.
> 
> Signed-off-by: Christoph Hellwig <h...@lst.de>
> 
> Index: qemu/block.c
> ===================================================================
> --- qemu.orig/block.c 2010-01-12 19:08:07.363003775 +0100
> +++ qemu/block.c      2010-01-12 19:09:10.836255948 +0100
> @@ -589,6 +589,7 @@ int bdrv_commit(BlockDriverState *bs)
>      BlockDriver *drv = bs->drv;
>      int64_t i, total_sectors;
>      int n, j;
> +    int ret = 0;
>      unsigned char sector[512];
>  
>      if (!drv)
> @@ -620,10 +621,18 @@ int bdrv_commit(BlockDriverState *bs)
>          }
>      }
>  
> -    if (drv->bdrv_make_empty)
> -     return drv->bdrv_make_empty(bs);
> +    if (drv->bdrv_make_empty) {
> +     ret = drv->bdrv_make_empty(bs);
> +        bdrv_flush(bs);
> +    }

Indentation is off here (but it already was before the patch). The logic
looks good to me now.

Kevin


Reply via email to