From 1d44952fc7f4de113eae892401e4d50ee476e82e Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Sun, 17 Jan 2010 12:32:30 +0100 Subject: [PATCH] block: fix cache flushing in bdrv_commit Signed-off-by: Anthony Liguori --- block.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/block.c b/block.c index f90e9837da..73c26ec410 100644 --- a/block.c +++ b/block.c @@ -557,6 +557,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) @@ -588,8 +589,10 @@ 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); + } /* * Make sure all data we wrote to the backing device is actually @@ -597,7 +600,7 @@ int bdrv_commit(BlockDriverState *bs) */ if (bs->backing_hd) bdrv_flush(bs->backing_hd); - return 0; + return ret; } /*