[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/22] qemu-img: add compressed clusters to BlockFra
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 06/22] qemu-img: add compressed clusters to BlockFragInfo |
Date: |
Fri, 22 Feb 2013 22:23:35 +0100 |
From: Stefan Hajnoczi <address@hidden>
Show how many clusters are compressed. This can be used to monitor how
many compressed clusters remain and whether to recompress the image.
Suggested-by: Cole Robinson <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
include/block/block.h | 1 +
qapi-schema.json | 6 +++++-
qemu-img.c | 7 +++++--
tests/qemu-iotests/044.out | 1 +
tests/qemu-iotests/common.rc | 2 +-
5 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/include/block/block.h b/include/block/block.h
index ce61883..9661f9a 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -24,6 +24,7 @@ typedef struct BlockFragInfo {
uint64_t allocated_clusters;
uint64_t total_clusters;
uint64_t fragmented_clusters;
+ uint64_t compressed_clusters;
} BlockFragInfo;
typedef struct QEMUSnapshotInfo {
diff --git a/qapi-schema.json b/qapi-schema.json
index c20725c..28b070f 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -279,6 +279,10 @@
# field is present if the driver for the image format
# supports it
#
+# @compressed-clusters: #optional total number of compressed clusters, this
+# field is present if the driver for the image format
+# supports it
+#
# Since: 1.4
#
##
@@ -288,7 +292,7 @@
'*image-end-offset': 'int', '*corruptions': 'int', '*leaks': 'int',
'*corruptions-fixed': 'int', '*leaks-fixed': 'int',
'*total-clusters': 'int', '*allocated-clusters': 'int',
- '*fragmented-clusters': 'int' } }
+ '*fragmented-clusters': 'int', '*compressed-clusters': 'int' } }
##
# @StatusInfo:
diff --git a/qemu-img.c b/qemu-img.c
index 0e34bf0..fa9b2af 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -428,10 +428,11 @@ static void dump_human_image_check(ImageCheck *check)
if (check->total_clusters != 0 && check->allocated_clusters != 0) {
printf("%" PRId64 "/%" PRId64 " = %0.2f%% allocated, "
- "%0.2f%% fragmented\n",
+ "%0.2f%% fragmented, %0.2f%% compressed clusters\n",
check->allocated_clusters, check->total_clusters,
check->allocated_clusters * 100.0 / check->total_clusters,
- check->fragmented_clusters * 100.0 / check->allocated_clusters);
+ check->fragmented_clusters * 100.0 / check->allocated_clusters,
+ check->compressed_clusters * 100.0 / check->allocated_clusters);
}
if (check->image_end_offset) {
@@ -472,6 +473,8 @@ static int collect_image_check(BlockDriverState *bs,
check->has_allocated_clusters = result.bfi.allocated_clusters != 0;
check->fragmented_clusters = result.bfi.fragmented_clusters;
check->has_fragmented_clusters = result.bfi.fragmented_clusters != 0;
+ check->compressed_clusters = result.bfi.compressed_clusters;
+ check->has_compressed_clusters = result.bfi.compressed_clusters != 0;
return 0;
}
diff --git a/tests/qemu-iotests/044.out b/tests/qemu-iotests/044.out
index 9c48673..5eed3f8 100644
--- a/tests/qemu-iotests/044.out
+++ b/tests/qemu-iotests/044.out
@@ -1,4 +1,5 @@
No errors were found on the image.
+7292415/8391499= 86.90% allocated, 0.00% fragmented, 0.00% compressed clusters
Image end offset: 4296447488
.
----------------------------------------------------------------------
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index 5ba960b..e522d61 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -162,7 +162,7 @@ _cleanup_test_img()
_check_test_img()
{
$QEMU_IMG check "$@" -f $IMGFMT $TEST_IMG 2>&1 | \
- sed -e "/fragmented$/d" \
+ sed -e '/allocated.*fragmented.*compressed clusters/d' \
-e 's/qemu-img: This image format does not support checks/No
errors were found on the image./' \
-e '/Image end offset: [0-9]\+/d'
}
--
1.8.1.2
- [Qemu-devel] [PULL 00/22] Block patches, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 02/22] qemu-img: add json output option to the check command, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 01/22] qemu-img: find the image end offset during check, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 03/22] qcow2: introduce check_refcounts_l1/l2() flags, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 04/22] qcow2: record fragmentation statistics during check, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 10/22] block: Add synchronous wrapper for bdrv_co_is_allocated_above, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 07/22] qcow2: support compressed clusters in BlockFragInfo, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 09/22] block: refuse negative iops and bps values, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 08/22] block: use Error in do_check_io_limits(), Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 06/22] qemu-img: add compressed clusters to BlockFragInfo,
Kevin Wolf <=
- [Qemu-devel] [PATCH 05/22] qemu-img: fix missing space in qemu-img check output, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 12/22] qemu-img: Add compare subcommand, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 11/22] qemu-img: Add "Quiet mode" option, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 15/22] coroutine: move pooling to common code, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 13/22] qemu-iotests: Add qemu-img compare test, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 16/22] coroutine: trim down nesting level in perf_nesting test, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 17/22] block: complete all IOs before .bdrv_truncate, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 19/22] blockdev: add discard suboption to -drive, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 18/22] block: implement BDRV_O_UNMAP, Kevin Wolf, 2013/02/22
- [Qemu-devel] [PATCH 21/22] blockdev: enable discard by default, Kevin Wolf, 2013/02/22