]> git.proxmox.com Git - qemu.git/commitdiff
qcow2: Clear L2 table cache after write error
authorKevin Wolf <kwolf@redhat.com>
Fri, 28 May 2010 17:06:31 +0000 (19:06 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Wed, 9 Jun 2010 16:36:09 +0000 (18:36 +0200)
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 <kwolf@redhat.com>
(cherry picked from commit 1b7c801b40ce90795397bb566d019c9b76ef9c13)

Conflicts:

block/qcow2-cluster.c

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/qcow2-cluster.c

index c7057b166456cf9935de59d3e6c42249a88621e2..0dc4f1d8f204a14f96eded5f65efa0f033e52bad 100644 (file)
@@ -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;
     }