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