qemu-img has broken output with large snapshot names

Bug #1859989 reported by pevogam on 2020-01-16
This bug affects 1 person
Affects Status Importance Assigned to Milestone

Bug Description

On Qemu 4.1.1 the output of snapshots breaks if the chosen state name is too long:

# qemu-img snapshot -l /mnt/local/some_image.qcow2
Snapshot list:
1 online_provider_with_dhcp747 MiB 2020-01-15 12:05:01 00:00:45.873

Prior to 4.1.1 this used to work with extra tabs for the VM SIZE values. The collision is also disabling us from using a regex on top of this output to detect the snapshot.

pevogam (5-plamen) on 2020-01-16
summary: - qemu-img has broken input on large snapshot name
+ qemu-img has broken output on large snapshot name
summary: - qemu-img has broken output on large snapshot name
+ qemu-img has broken output with large snapshot names
description: updated
description: updated
description: updated
pevogam (5-plamen) on 2020-01-16
description: updated
description: updated
Max Reitz (xanclic) wrote :


When did this work last for you? I tried every .0 release down to 2.12.0, and all showed this kind of broken output. (I wasn’t able to compile 2.11.0 and earlier.)

Here was my test case:

$ ./qemu-img create -f qcow2 foo.qcow2 64M
Formatting 'foo.qcow2', fmt=qcow2 size=67108864 cluster_size=65536 lazy_refcounts=off refcount_bits=16
$ ./qemu-img snapshot -c foofoofoofoofoofoofoofoofoofoo foo.qcow2
$ ./qemu-img snapshot -l foo.qcow2
Snapshot list:
1 foofoofoofoofoofoofoofoofoofoo 0 2020-01-17 10:53:17 00:00:00.000
$ ./qemu-img --version
qemu-img version 2.12.0 (v2.12.0)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers


Max Reitz (xanclic) wrote :

I’ve just seen that launchpad collapses the spaces in the snapshot... All I can say is that diff tells me the output from 2.12.0 and 4.1.1 is exactly the same, with only one difference: 2.12.0 prints the VM SIZE as “0” (without a unit), whereas 4.1.1 prints “0 B”.

But now I just realized you probably mean that there is no space between the snapshot name and the VM state size in your example. OK, I thought you meant the fact that the headers are not aligned to the table body columns.

That seems to be because the size is printed in a 7-wide field, which isn’t sufficient for three-digit sizes with unit prefixes; so “747 MiB” is not prefixed by a space. I think de38b5005e9 is to blame which which (from what I can tell) effectively changed the output from using SI prefixes to IEC prefixes (which requires one more character), adds a space before and a “B” after the prefix (another two additional characters), and by always printing three digits, which may require a decimal point (so another character). But it didn’t grow the field width. So I think we should do that.


pevogam (5-plamen) wrote :

Hi Max,

It last worked in (previous version we used):
[root@c15 ~]# qemu-img --version
qemu-img version 3.1.1 (qemu-3.1.1-2.fc30)
Copyright (c) 2003-2018 Fabrice Bellard and the QEMU Project developers

Yes, unfortunately Launchpad doesn't seem to support any literal formatting which is why I tried to use the ``` to signal this. I will attach some images from both version to counter this effect and make it clearer to you where the problem is which is indeed in the clash between the state name and the size. The IEC prefixes were something new and we could handle that but not the lack of space which is new in this version we tried.

Laurent Vivier (laurent-vivier) wrote :
Changed in qemu:
status: New → Fix Committed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Bug attachments