On 4/15/20 2:49 AM, Markus Armbruster wrote:
qemu-img create, convert, amend, and measure use accumulate_options()
to merge multiple -o options. This is broken for -o "":
$ qemu-img create -f qcow2 -o backing_file=a -o "" -o
backing_fmt=raw,size=1M new.qcow2
qemu-img: warning: Could not verify backing image. This may become an
error in future versions.
Could not open 'a,backing_fmt=raw': No such file or directory
Formatting 'new.qcow2', fmt=qcow2 size=1048576
backing_file=a,,backing_fmt=raw cluster_size=65536 lazy_refcounts=off
refcount_bits=16
$ qemu-img info new.qcow2
image: new.qcow2
file format: qcow2
virtual size: 1 MiB (1048576 bytes)
disk size: 196 KiB
cluster_size: 65536
--> backing file: a,backing_fmt=raw
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
Merging these three -o the obvious way is wrong, because it results in
an unwanted ',' escape:
backing_file=a,,backing_fmt=raw,size=1M
~~
We could silently drop -o "", but Kevin asked me to reject it instead.
Signed-off-by: Markus Armbruster <arm...@redhat.com>
---
qemu-img.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
This results in the error message:
qemu-img: Invalid option list:
with a trailing space and no indication that it was an empty string we
were trying to warn about. But that's tolerable.
Reviewed-by: Eric Blake <ebl...@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org