summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlberto Garcia <berto@igalia.com>2020-07-10 18:13:08 +0200
committerMax Reitz <mreitz@redhat.com>2020-08-25 08:33:20 +0200
commitff4cdec7f6e7302d2a82fdb627373c32aecb3dfe (patch)
treec593312403ef3c10adf2e141030c710a021a4c6f
parentaca00cd971c830ad2a71cc881db33275d0a4107c (diff)
downloadfocaccia-qemu-ff4cdec7f6e7302d2a82fdb627373c32aecb3dfe.tar.gz
focaccia-qemu-ff4cdec7f6e7302d2a82fdb627373c32aecb3dfe.zip
qcow2: Clear the L2 bitmap when allocating a compressed cluster
Compressed clusters always have the bitmap part of the extended L2
entry set to 0.

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <04455b3de5dfeb9d1cfe1fc7b02d7060a6e09710.1594396418.git.berto@igalia.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
-rw-r--r--block/qcow2-cluster.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 816ddc7639..1e84bd8e2e 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -862,6 +862,9 @@ int qcow2_alloc_compressed_cluster_offset(BlockDriverState *bs,
     BLKDBG_EVENT(bs->file, BLKDBG_L2_UPDATE_COMPRESSED);
     qcow2_cache_entry_mark_dirty(s->l2_table_cache, l2_slice);
     set_l2_entry(s, l2_slice, l2_index, cluster_offset);
+    if (has_subclusters(s)) {
+        set_l2_bitmap(s, l2_slice, l2_index, 0);
+    }
     qcow2_cache_put(s->l2_table_cache, (void **) &l2_slice);
 
     *host_offset = cluster_offset & s->cluster_offset_mask;