aboutsummaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2010-05-28 19:06:31 +0200
committerDoug Goldstein <cardoe@gentoo.org>2010-07-20 17:33:59 -0500
commit74c825d6bb04b8353f7278e01c672c49aec645bc (patch)
tree6a8be8247d90dc42b6bc3b8ef514cacd4ff809e7 /block
parentide: Fix ide_dma_cancel (diff)
downloadqemu-kvm-74c825d6bb04b8353f7278e01c672c49aec645bc.tar.gz
qemu-kvm-74c825d6bb04b8353f7278e01c672c49aec645bc.tar.bz2
qemu-kvm-74c825d6bb04b8353f7278e01c672c49aec645bc.zip
qcow2: Clear L2 table cache after write error
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>
Diffstat (limited to 'block')
-rw-r--r--block/qcow2-cluster.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index c7057b166..0dc4f1d8f 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;
}