Two changes are needed in order to add subcluster support to this function: deallocated clusters must have their bitmaps cleared, and expanded clusters must have all the "subcluster allocated" bits set.
Signed-off-by: Alberto Garcia <be...@igalia.com> --- block/qcow2-cluster.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index aa3eb727a5..62f2a9fcc0 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -2036,6 +2036,7 @@ static int expand_zero_clusters_in_l1(BlockDriverState *bs, uint64_t *l1_table, /* not backed; therefore we can simply deallocate the * cluster */ set_l2_entry(s, l2_slice, j, 0); + set_l2_bitmap(s, l2_slice, j, 0); l2_dirty = true; continue; } @@ -2102,6 +2103,7 @@ static int expand_zero_clusters_in_l1(BlockDriverState *bs, uint64_t *l1_table, } else { set_l2_entry(s, l2_slice, j, offset); } + set_l2_bitmap(s, l2_slice, j, QCOW_L2_BITMAP_ALL_ALLOC); l2_dirty = true; } -- 2.20.1