From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59063) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aBQ5N-0003k1-30 for qemu-devel@nongnu.org; Tue, 22 Dec 2015 11:46:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aBQ5M-0007D9-7t for qemu-devel@nongnu.org; Tue, 22 Dec 2015 11:46:53 -0500 From: Kevin Wolf Date: Tue, 22 Dec 2015 17:46:24 +0100 Message-Id: <1450802786-20893-9-git-send-email-kwolf@redhat.com> In-Reply-To: <1450802786-20893-1-git-send-email-kwolf@redhat.com> References: <1450802786-20893-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 08/10] qcow2: Fix BDRV_O_INCOMING handling in qcow2_invalidate_cache() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-block@nongnu.org Cc: kwolf@redhat.com, qemu-devel@nongnu.org, mreitz@redhat.com What qcow2_invalidate_cache() should do is closing the image with BDRV_O_INCOMING set and reopening it with the flag cleared. In fact, it used to do exactly the opposite: qcow2_close() relied on bs->open_flags, which is already updated to have cleared BDRV_O_INCOMING at this point, whereas qcow2_open() was called with s->flags, which has the flag still set. Fix this. Signed-off-by: Kevin Wolf --- block/qcow2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/qcow2.c b/block/qcow2.c index 2cba276..de50b80 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1718,7 +1718,7 @@ static void qcow2_close(BlockDriverState *bs) /* else pre-write overlap checks in cache_destroy may crash */ s->l1_table = NULL; - if (!(bs->open_flags & BDRV_O_INCOMING)) { + if (!(s->flags & BDRV_O_INCOMING)) { qcow2_inactivate(bs); } @@ -1769,6 +1769,7 @@ static void qcow2_invalidate_cache(BlockDriverState *bs, Error **errp) memset(s, 0, sizeof(BDRVQcow2State)); options = qdict_clone_shallow(bs->options); + flags &= ~BDRV_O_INCOMING; ret = qcow2_open(bs, options, flags, &local_err); QDECREF(options); if (local_err) { -- 1.8.3.1