qcow2: Fix "total clusters" number in bdrv_check
This should be based on the virtual disk size, not on the size of the image. Interesting observation: With some VM state stored in the image file, percentages higher than 100% are possible, even though snapshots themselves are ignored. This is a qcow2 bug to be fixed another day: The VM state should be discarded in the active L2 tables after completing the snapshot creation. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
6f74928192
commit
c349ca4bb2
@ -1152,9 +1152,11 @@ int qcow2_check_refcounts(BlockDriverState *bs, BdrvCheckResult *res,
|
|||||||
|
|
||||||
size = bdrv_getlength(bs->file);
|
size = bdrv_getlength(bs->file);
|
||||||
nb_clusters = size_to_clusters(s, size);
|
nb_clusters = size_to_clusters(s, size);
|
||||||
res->bfi.total_clusters = nb_clusters;
|
|
||||||
refcount_table = g_malloc0(nb_clusters * sizeof(uint16_t));
|
refcount_table = g_malloc0(nb_clusters * sizeof(uint16_t));
|
||||||
|
|
||||||
|
res->bfi.total_clusters =
|
||||||
|
size_to_clusters(s, bs->total_sectors * BDRV_SECTOR_SIZE);
|
||||||
|
|
||||||
/* header */
|
/* header */
|
||||||
inc_refcounts(bs, res, refcount_table, nb_clusters,
|
inc_refcounts(bs, res, refcount_table, nb_clusters,
|
||||||
0, s->cluster_size);
|
0, s->cluster_size);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
No errors were found on the image.
|
No errors were found on the image.
|
||||||
7292415/8391499= 86.90% allocated, 0.00% fragmented, 0.00% compressed clusters
|
7292415/33554432 = 21.73% allocated, 0.00% fragmented, 0.00% compressed clusters
|
||||||
Image end offset: 4296447488
|
Image end offset: 4296447488
|
||||||
.
|
.
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user