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:
Kevin Wolf 2013-03-26 17:49:54 +01:00 committed by Stefan Hajnoczi
parent 6f74928192
commit c349ca4bb2
2 changed files with 4 additions and 2 deletions

View File

@ -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);

View File

@ -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
. .
---------------------------------------------------------------------- ----------------------------------------------------------------------