]> rtime.felk.cvut.cz Git - lisovros/qemu_apohw.git/commitdiff
block: Flush parent to OS with cache=unsafe
authorKevin Wolf <kwolf@redhat.com>
Wed, 15 Aug 2012 10:52:45 +0000 (12:52 +0200)
committerKevin Wolf <kwolf@redhat.com>
Wed, 15 Aug 2012 13:14:43 +0000 (15:14 +0200)
Commit 29cdb251 already added a comment that no unnecessary flushes to
disk will occur, this patch makes the code even get to the point of the
comment. This is mostly theoretical because in practice we only stack
one format on top of one protocol, the former implementing flush_to_os
and the latter only flush_to_disk. It starts to matter when drivers that
are not on top implement flush_to_os.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
block.c

diff --git a/block.c b/block.c
index 016858bf8c58accd6b8c938f3953d5c34481f2cc..470bdcc1f67ecf1fc5283d4c7546187d253d9088 100644 (file)
--- a/block.c
+++ b/block.c
@@ -3534,7 +3534,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs)
 
     /* But don't actually force it to the disk with cache=unsafe */
     if (bs->open_flags & BDRV_O_NO_FLUSH) {
-        return 0;
+        goto flush_parent;
     }
 
     if (bs->drv->bdrv_co_flush_to_disk) {
@@ -3573,6 +3573,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs)
     /* Now flush the underlying protocol.  It will also have BDRV_O_NO_FLUSH
      * in the case of cache=unsafe, so there are no useless flushes.
      */
+flush_parent:
     return bdrv_co_flush(bs->file);
 }