From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=47650 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OI3tt-0003gH-1V for qemu-devel@nongnu.org; Fri, 28 May 2010 14:03:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OI3sa-0002Uv-CS for qemu-devel@nongnu.org; Fri, 28 May 2010 14:01:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47627) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OI3sa-0002Uj-4p for qemu-devel@nongnu.org; Fri, 28 May 2010 14:01:56 -0400 From: Kevin Wolf Date: Fri, 28 May 2010 20:01:28 +0200 Message-Id: <1275069692-5756-3-git-send-email-kwolf@redhat.com> In-Reply-To: <1275069692-5756-1-git-send-email-kwolf@redhat.com> References: <1275069692-5756-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [STABLE PATCH 2/6] qcow2: Clear L2 table cache after write error List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org If the L2 table was already updated in cache, but writing it to disk has failed, we must not continue using the changed version in the cache to stay consistent with what's on the disk. Signed-off-by: Kevin Wolf (cherry picked from commit 1b7c801b40ce90795397bb566d019c9b76ef9c13) Conflicts: block/qcow2-cluster.c Signed-off-by: Kevin Wolf --- block/qcow2-cluster.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index c7057b1..0dc4f1d 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -672,8 +672,9 @@ int qcow2_alloc_cluster_link_l2(BlockDriverState *bs, QCowL2Meta *m) (i << s->cluster_bits)) | QCOW_OFLAG_COPIED); } - if (write_l2_entries(s, l2_table, l2_offset, l2_index, m->nb_clusters) < 0) { - ret = -1; + ret = write_l2_entries(s, l2_table, l2_offset, l2_index, m->nb_clusters); + if (ret < 0) { + qcow2_l2_cache_reset(bs); goto err; } -- 1.6.6.1