On Fri, May 18, 2012 at 3:18 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Formats are entirely in charge of flushes for metadata writes. For > guest-initiated writes, a writethrough cache is faked in the block layer. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > block.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block.c b/block.c > index 3db7150..b3d0054 100644 > --- a/block.c > +++ b/block.c > @@ -661,7 +661,7 @@ static int bdrv_open_common(BlockDriverState *bs, const > char *filename, > if (drv->bdrv_file_open) { > ret = drv->bdrv_file_open(bs, filename, open_flags); > } else { > - ret = bdrv_file_open(&bs->file, filename, open_flags); > + ret = bdrv_file_open(&bs->file, filename, open_flags & > ~BDRV_O_CACHE_WB);
Do you really want to open image files with O_DSYNC? For example, when I try these patches with -drive if=virtio,file=test.img,cache=none I find that the image file file descriptor has O_DSYNC set! That would make cache=none equivalent to cache=directsync. Stefan