From cd14f4d346f2b1099b2374e1bd177d143d687a77 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Fri, 28 May 2010 19:06:31 +0200 Subject: [PATCH] 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 (cherry picked from commit 1b7c801b40ce90795397bb566d019c9b76ef9c13) Conflicts: block/qcow2-cluster.c Signed-off-by: Kevin Wolf --- block/qcow2-cluster.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index c7057b16645..0dc4f1d8f20 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; } -- 2.39.5