Instead of qemu_img_log("info", ..) use generic helper img_info_log().
img_info_log() has smarter logic. For example it use filter_img_info()
to filter output, which in turns filter a compression type. So it will
help us in future when we implement a possibility to use zstd
compression by default (with help of some runtime config file or maybe
build option). For now to test you should recompile qemu with a small
patch:
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -3540,6 +3540,11 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
}
}
+ if (!qcow2_opts->has_compression_type && version >= 3) {
+ qcow2_opts->has_compression_type = true;
+ qcow2_opts->compression_type = QCOW2_COMPRESSION_TYPE_ZSTD;
+ }
+
if (qcow2_opts->has_compression_type &&
qcow2_opts->compression_type != QCOW2_COMPRESSION_TYPE_ZLIB) {
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
tests/qemu-iotests/302 | 3 ++-
tests/qemu-iotests/302.out | 7 +++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/tests/qemu-iotests/302 b/tests/qemu-iotests/302
index 5695af4914..2180dbc896 100755
--- a/tests/qemu-iotests/302
+++ b/tests/qemu-iotests/302
@@ -34,6 +34,7 @@ from iotests import (
qemu_img_measure,
qemu_io,
qemu_nbd_popen,
+ img_info_log,
)
iotests.script_initialize(supported_fmts=["qcow2"])
@@ -99,7 +100,7 @@ with tarfile.open(tar_file, "w") as tar:
nbd_uri)
iotests.log("=== Converted image info ===")
- qemu_img_log("info", nbd_uri)
+ img_info_log(nbd_uri)
iotests.log("=== Converted image check ===")
qemu_img_log("check", nbd_uri)
diff --git a/tests/qemu-iotests/302.out b/tests/qemu-iotests/302.out
index e2f6077e83..3e7c281b91 100644
--- a/tests/qemu-iotests/302.out
+++ b/tests/qemu-iotests/302.out
@@ -6,14 +6,13 @@ virtual size: 448 KiB (458752 bytes)
disk size: unavailable
=== Converted image info ===
-image: nbd+unix:///exp?socket=SOCK_DIR/PID-nbd-sock
-file format: qcow2
+image: TEST_IMG
+file format: IMGFMT
virtual size: 1 GiB (1073741824 bytes)
-disk size: unavailable
cluster_size: 65536
Format specific information:
compat: 1.1
- compression type: zlib
+ compression type: COMPRESSION_TYPE
lazy refcounts: false
refcount bits: 16
corrupt: false
--
2.29.2
On 05.07.21 11:15, Vladimir Sementsov-Ogievskiy wrote:
> Instead of qemu_img_log("info", ..) use generic helper img_info_log().
>
> img_info_log() has smarter logic. For example it use filter_img_info()
> to filter output, which in turns filter a compression type. So it will
> help us in future when we implement a possibility to use zstd
> compression by default (with help of some runtime config file or maybe
> build option). For now to test you should recompile qemu with a small
> patch:
>
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -3540,6 +3540,11 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
> }
> }
>
> + if (!qcow2_opts->has_compression_type && version >= 3) {
> + qcow2_opts->has_compression_type = true;
> + qcow2_opts->compression_type = QCOW2_COMPRESSION_TYPE_ZSTD;
> + }
> +
> if (qcow2_opts->has_compression_type &&
> qcow2_opts->compression_type != QCOW2_COMPRESSION_TYPE_ZLIB) {
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
> tests/qemu-iotests/302 | 3 ++-
> tests/qemu-iotests/302.out | 7 +++----
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/tests/qemu-iotests/302 b/tests/qemu-iotests/302
> index 5695af4914..2180dbc896 100755
> --- a/tests/qemu-iotests/302
> +++ b/tests/qemu-iotests/302
> @@ -34,6 +34,7 @@ from iotests import (
> qemu_img_measure,
> qemu_io,
> qemu_nbd_popen,
> + img_info_log,
> )
>
> iotests.script_initialize(supported_fmts=["qcow2"])
> @@ -99,7 +100,7 @@ with tarfile.open(tar_file, "w") as tar:
> nbd_uri)
>
> iotests.log("=== Converted image info ===")
> - qemu_img_log("info", nbd_uri)
> + img_info_log(nbd_uri)
There’s another `qemu_img_log("info", nbd_uri)` call above this place.
We can’t use `img_info_log()` there, because in that case, the image is
not in qcow2 format (which is the test’s image format), but
`img_info_log()` enforces “-f {imgfmt}”. It would have been nice to
have a comment on that somewhere, though.
But, well.
Reviewed-by: Max Reitz <mreitz@redhat.com>
(And speaking in principle, I don’t think I like the broad
img_info_log() very much anyway, because I feel like tests should rather
only have the actually relevant bits in their reference outputs…)
>
> iotests.log("=== Converted image check ===")
> qemu_img_log("check", nbd_uri)
> diff --git a/tests/qemu-iotests/302.out b/tests/qemu-iotests/302.out
> index e2f6077e83..3e7c281b91 100644
> --- a/tests/qemu-iotests/302.out
> +++ b/tests/qemu-iotests/302.out
> @@ -6,14 +6,13 @@ virtual size: 448 KiB (458752 bytes)
> disk size: unavailable
>
> === Converted image info ===
> -image: nbd+unix:///exp?socket=SOCK_DIR/PID-nbd-sock
> -file format: qcow2
> +image: TEST_IMG
> +file format: IMGFMT
> virtual size: 1 GiB (1073741824 bytes)
> -disk size: unavailable
> cluster_size: 65536
> Format specific information:
> compat: 1.1
> - compression type: zlib
> + compression type: COMPRESSION_TYPE
> lazy refcounts: false
> refcount bits: 16
> corrupt: false
16.07.2021 14:39, Max Reitz wrote:
> On 05.07.21 11:15, Vladimir Sementsov-Ogievskiy wrote:
>> Instead of qemu_img_log("info", ..) use generic helper img_info_log().
>>
>> img_info_log() has smarter logic. For example it use filter_img_info()
>> to filter output, which in turns filter a compression type. So it will
>> help us in future when we implement a possibility to use zstd
>> compression by default (with help of some runtime config file or maybe
>> build option). For now to test you should recompile qemu with a small
>> patch:
>>
>> --- a/block/qcow2.c
>> +++ b/block/qcow2.c
>> @@ -3540,6 +3540,11 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
>> }
>> }
>>
>> + if (!qcow2_opts->has_compression_type && version >= 3) {
>> + qcow2_opts->has_compression_type = true;
>> + qcow2_opts->compression_type = QCOW2_COMPRESSION_TYPE_ZSTD;
>> + }
>> +
>> if (qcow2_opts->has_compression_type &&
>> qcow2_opts->compression_type != QCOW2_COMPRESSION_TYPE_ZLIB) {
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>> ---
>> tests/qemu-iotests/302 | 3 ++-
>> tests/qemu-iotests/302.out | 7 +++----
>> 2 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/qemu-iotests/302 b/tests/qemu-iotests/302
>> index 5695af4914..2180dbc896 100755
>> --- a/tests/qemu-iotests/302
>> +++ b/tests/qemu-iotests/302
>> @@ -34,6 +34,7 @@ from iotests import (
>> qemu_img_measure,
>> qemu_io,
>> qemu_nbd_popen,
>> + img_info_log,
>> )
>> iotests.script_initialize(supported_fmts=["qcow2"])
>> @@ -99,7 +100,7 @@ with tarfile.open(tar_file, "w") as tar:
>> nbd_uri)
>> iotests.log("=== Converted image info ===")
>> - qemu_img_log("info", nbd_uri)
>> + img_info_log(nbd_uri)
>
> There’s another `qemu_img_log("info", nbd_uri)` call above this place. We can’t use `img_info_log()` there, because in that case, the image is not in qcow2 format (which is the test’s image format), but `img_info_log()` enforces “-f {imgfmt}”. It would have been nice to have a comment on that somewhere, though.
I'll add a comment. Actually, I only fixed places which breaks when I set zstd by default. That's why some things may be not covered.
>
> But, well.
>
> Reviewed-by: Max Reitz <mreitz@redhat.com>
>
> (And speaking in principle, I don’t think I like the broad img_info_log() very much anyway, because I feel like tests should rather only have the actually relevant bits in their reference outputs…)
I agree, extra useless information in test outputs is always a pain.. We should pay more attention to it when add new tests.
>
>> iotests.log("=== Converted image check ===")
>> qemu_img_log("check", nbd_uri)
>> diff --git a/tests/qemu-iotests/302.out b/tests/qemu-iotests/302.out
>> index e2f6077e83..3e7c281b91 100644
>> --- a/tests/qemu-iotests/302.out
>> +++ b/tests/qemu-iotests/302.out
>> @@ -6,14 +6,13 @@ virtual size: 448 KiB (458752 bytes)
>> disk size: unavailable
>> === Converted image info ===
>> -image: nbd+unix:///exp?socket=SOCK_DIR/PID-nbd-sock
>> -file format: qcow2
>> +image: TEST_IMG
>> +file format: IMGFMT
>> virtual size: 1 GiB (1073741824 bytes)
>> -disk size: unavailable
>> cluster_size: 65536
>> Format specific information:
>> compat: 1.1
>> - compression type: zlib
>> + compression type: COMPRESSION_TYPE
>> lazy refcounts: false
>> refcount bits: 16
>> corrupt: false
>
--
Best regards,
Vladimir
05.07.2021 12:15, Vladimir Sementsov-Ogievskiy wrote:
> Instead of qemu_img_log("info", ..) use generic helper img_info_log().
>
> img_info_log() has smarter logic. For example it use filter_img_info()
> to filter output, which in turns filter a compression type. So it will
> help us in future when we implement a possibility to use zstd
> compression by default (with help of some runtime config file or maybe
> build option). For now to test you should recompile qemu with a small
> patch:
>
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -3540,6 +3540,11 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
> }
> }
>
> + if (!qcow2_opts->has_compression_type && version >= 3) {
> + qcow2_opts->has_compression_type = true;
> + qcow2_opts->compression_type = QCOW2_COMPRESSION_TYPE_ZSTD;
> + }
> +
> if (qcow2_opts->has_compression_type &&
> qcow2_opts->compression_type != QCOW2_COMPRESSION_TYPE_ZLIB) {
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy<vsementsov@virtuozzo.com>
Wow, that was bad idea to insert patch into commit message even with indent: it breaks rpm build for me.
So, reword like this:
build option). For now to test you should recompile qemu with a small
addition into block/qcow2.c before
"if (qcow2_opts->has_compression_type":
if (!qcow2_opts->has_compression_type && version >= 3) {
qcow2_opts->has_compression_type = true;
qcow2_opts->compression_type = QCOW2_COMPRESSION_TYPE_ZSTD;
}
--
Best regards,
Vladimir
© 2016 - 2026 Red Hat, Inc.