[Qemu-devel] [PATCH 6/7] qemu-img check: add file-size

Vladimir Sementsov-Ogievskiy posted 7 patches 8 years, 8 months ago
[Qemu-devel] [PATCH 6/7] qemu-img check: add file-size
Posted by Vladimir Sementsov-Ogievskiy 8 years, 8 months ago
Add bdrv_getlength() of underlying bs->file->bs, to improve
'Format unallocated size' section of qemu-img check output.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
 qapi/block-core.json |  2 +-
 qemu-img.c           | 11 ++++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/qapi/block-core.json b/qapi/block-core.json
index c7ed5dc970..f720a29512 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -186,7 +186,7 @@
            '*corruptions-fixed': 'int', '*leaks-fixed': 'int',
            '*total-clusters': 'int', '*allocated-clusters': 'int',
            '*fragmented-clusters': 'int', '*compressed-clusters': 'int',
-           '*format-unallocated-size': 'uint64'} }
+           '*format-unallocated-size': 'uint64', '*file-size': 'uint64'} }
 
 ##
 # @MapEntry:
diff --git a/qemu-img.c b/qemu-img.c
index cbd09148d2..08a2b5ba54 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -603,10 +603,13 @@ static void dump_human_image_check(ImageCheck *check, bool quiet)
     }
 
     if (check->has_format_unallocated_size) {
-        char u_buf[128];
-        qprintf(quiet, "Format unallocated size: %s\n",
+        char buf[128], u_buf[128];
+        assert(check->has_file_size);
+        qprintf(quiet, "Format unallocated size: %s/%s = %0.2f%%\n",
                 get_human_readable_size(u_buf, sizeof(u_buf),
-                                        check->format_unallocated_size));
+                                        check->format_unallocated_size),
+                get_human_readable_size(buf, sizeof(buf), check->file_size),
+                check->format_unallocated_size * 100.0 / check->file_size);
     }
 }
 
@@ -650,6 +653,8 @@ static int collect_image_check(BlockDriverState *bs,
         int64_t file_size = bdrv_getlength(bs->file->bs);
         if (file_size >= 0) {
             int64_t format_allocated_size = bdrv_get_format_allocated_size(bs);
+            check->file_size = file_size;
+            check->has_file_size = true;
             if (format_allocated_size >= 0) {
                 check->format_unallocated_size =
                     file_size - format_allocated_size;
-- 
2.11.1


Re: [Qemu-devel] [PATCH 6/7] qemu-img check: add file-size
Posted by Eric Blake 8 years, 8 months ago
On 05/25/2017 10:26 AM, Vladimir Sementsov-Ogievskiy wrote:
> Add bdrv_getlength() of underlying bs->file->bs, to improve
> 'Format unallocated size' section of qemu-img check output.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>  qapi/block-core.json |  2 +-
>  qemu-img.c           | 11 ++++++++---
>  2 files changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/qapi/block-core.json b/qapi/block-core.json
> index c7ed5dc970..f720a29512 100644
> --- a/qapi/block-core.json
> +++ b/qapi/block-core.json
> @@ -186,7 +186,7 @@
>             '*corruptions-fixed': 'int', '*leaks-fixed': 'int',
>             '*total-clusters': 'int', '*allocated-clusters': 'int',
>             '*fragmented-clusters': 'int', '*compressed-clusters': 'int',
> -           '*format-unallocated-size': 'uint64'} }
> +           '*format-unallocated-size': 'uint64', '*file-size': 'uint64'} }

Missing documentation, including a since 2.10 blurb.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org