From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52004) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T1bHv-000751-Nb for qemu-devel@nongnu.org; Wed, 15 Aug 2012 06:57:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T1bHu-0006U5-Pp for qemu-devel@nongnu.org; Wed, 15 Aug 2012 06:57:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:65029) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T1bHu-0006U0-I9 for qemu-devel@nongnu.org; Wed, 15 Aug 2012 06:57:22 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q7FAvLkK015609 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 15 Aug 2012 06:57:21 -0400 From: Kevin Wolf Date: Wed, 15 Aug 2012 12:57:18 +0200 Message-Id: <1345028238-9622-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH] block: Flush parent to OS with cache=unsafe List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com 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 --- block.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/block.c b/block.c index 016858b..470bdcc 100644 --- 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); } -- 1.7.6.5