qcow2: Clear L2 table cache after write error
authorKevin Wolf <kwolf@redhat.com>
Tue, 13 Apr 2010 09:43:27 +0000 (11:43 +0200)
committerKevin Wolf <kwolf@redhat.com>
Fri, 28 May 2010 11:14:25 +0000 (13:14 +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>
block/qcow2-cluster.c

index c11680d12afbec5f59ac3107227f5d9d5bbd01b7..ed5c4b2a676f4509f0cf48154422199ba4444bc1 100644 (file)
@@ -696,6 +696,7 @@ int qcow2_alloc_cluster_link_l2(BlockDriverState *bs, QCowL2Meta *m)
 
     ret = write_l2_entries(bs, l2_table, l2_offset, l2_index, m->nb_clusters);
     if (ret < 0) {
+        qcow2_l2_cache_reset(bs);
         goto err;
     }