Am 12.01.2010 13:49, 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. > > Signed-off-by: Christoph Hellwig <h...@lst.de> > > Index: qemu/block.c > =================================================================== > --- qemu.orig/block.c 2010-01-12 11:34:35.549024986 +0100 > +++ qemu/block.c 2010-01-12 11:43:28.965006129 +0100 > @@ -623,6 +623,12 @@ int bdrv_commit(BlockDriverState *bs) > if (drv->bdrv_make_empty) > return drv->bdrv_make_empty(bs); > > + /* > + * Make sure all data we wrote to the backing device is actually > + * stable on disk. > + */ > + if (bs->backing_hd) > + bdrv_flush(bs->backing_hd); > return 0; > }
Format drivers with a bdrv_make_empty return before the flush, so it won't work for qcow1. Looks good otherwise. If it has done a bdrv_make_empty we might also want to flush bs? Kevin