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

Reply via email to