mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
qcow2: Assert that expand_zero_clusters_in_l1() does not support subclusters
This function is only used by qcow2_expand_zero_clusters() to downgrade a qcow2 image to a previous version. This would require transforming all extended L2 entries into normal L2 entries but this is not a simple task and there are no plans to implement this at the moment. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <15e65112b4144381b4d8c0bdf8fb76b0d813e3d1.1594396418.git.berto@igalia.com> [mreitz: Fixed comment style] Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
2118771ddf
commit
7bbb59202a
3 changed files with 23 additions and 2 deletions
|
@ -2166,6 +2166,9 @@ static int expand_zero_clusters_in_l1(BlockDriverState *bs, uint64_t *l1_table,
|
|||
int ret;
|
||||
int i, j;
|
||||
|
||||
/* qcow2_downgrade() is not allowed in images with subclusters */
|
||||
assert(!has_subclusters(s));
|
||||
|
||||
slice_size2 = s->l2_slice_size * l2_entry_size(s);
|
||||
n_slices = s->cluster_size / slice_size2;
|
||||
|
||||
|
@ -2233,8 +2236,11 @@ static int expand_zero_clusters_in_l1(BlockDriverState *bs, uint64_t *l1_table,
|
|||
|
||||
if (cluster_type == QCOW2_CLUSTER_ZERO_PLAIN) {
|
||||
if (!bs->backing) {
|
||||
/* not backed; therefore we can simply deallocate the
|
||||
* cluster */
|
||||
/*
|
||||
* not backed; therefore we can simply deallocate the
|
||||
* cluster. No need to call set_l2_bitmap(), this
|
||||
* function doesn't support images with subclusters.
|
||||
*/
|
||||
set_l2_entry(s, l2_slice, j, 0);
|
||||
l2_dirty = true;
|
||||
continue;
|
||||
|
@ -2305,6 +2311,10 @@ static int expand_zero_clusters_in_l1(BlockDriverState *bs, uint64_t *l1_table,
|
|||
} else {
|
||||
set_l2_entry(s, l2_slice, j, offset);
|
||||
}
|
||||
/*
|
||||
* No need to call set_l2_bitmap() after set_l2_entry() because
|
||||
* this function doesn't support images with subclusters.
|
||||
*/
|
||||
l2_dirty = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue