[pve-devel] [PATCH qemu-server] fix #2469: fix qemu-img convert src_format detection

Thomas Lamprecht t.lamprecht at proxmox.com
Mon Nov 25 11:27:45 CET 2019


On 11/25/19 11:05 AM, Fabian Grünbichler wrote:
> On November 25, 2019 10:53 am, Thomas Lamprecht wrote:
>> On 11/25/19 10:49 AM, Fabian Grünbichler wrote:
>>> if we don't know which format the source volume/file has, let qemu-img
>>> decide.
>>>
>>> Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
>>> ---
>>> also checked EFI disk creation, auto-detection works correctly there.
>>>
>>>  PVE/QemuServer.pm                  | 7 ++++---
>>>  test/run_qemu_img_convert_tests.pl | 4 ++--
>>>  2 files changed, 6 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
>>> index fcedcf1..26f1797 100644
>>> --- a/PVE/QemuServer.pm
>>> +++ b/PVE/QemuServer.pm
>>> @@ -6715,7 +6715,7 @@ sub qemu_img_convert {
>>>      my $cachemode;
>>>      my $src_path;
>>>      my $src_is_iscsi = 0;
>>> -    my $src_format = 'raw';
>>> +    my $src_format;
>>>  
>>>      if ($src_storeid) {
>>>  	PVE::Storage::activate_volumes($storecfg, [$src_volid], $snapname);
>>> @@ -6740,14 +6740,15 @@ sub qemu_img_convert {
>>>  
>>>      my $cmd = [];
>>>      push @$cmd, '/usr/bin/qemu-img', 'convert', '-p', '-n';
>>> -    push @$cmd, '-l', "snapshot.name=$snapname" if($snapname && $src_format eq "qcow2");
>>> +    push @$cmd, '-l', "snapshot.name=$snapname"
>>> +	if $snapname && defined($src_format) && $src_format eq "qcow2";
>>>      push @$cmd, '-t', 'none' if $dst_scfg->{type} eq 'zfspool';
>>>      push @$cmd, '-T', $cachemode if defined($cachemode);
>>>  
>>>      if ($src_is_iscsi) {
>>>  	push @$cmd, '--image-opts';
>>>  	$src_path = convert_iscsi_path($src_path);
>>> -    } else {
>>> +    } elsif($src_format) {
>>
>> defined-ness check also here, if you use it in the postif too..
>>
>> looks OK, besides that
> 
> we don't strictly need the defined-ness check in the postif either,
> since $src_format can only either be undef, or true/non-empty ;)

I know.. keep it consistent.

> 
>>
>>>  	push @$cmd, '-f', $src_format;
>>>      }
>>>  
>>> diff --git a/test/run_qemu_img_convert_tests.pl b/test/run_qemu_img_convert_tests.pl
>>> index 8a57108..bd5542f 100755
>>> --- a/test/run_qemu_img_convert_tests.pl
>>> +++ b/test/run_qemu_img_convert_tests.pl
>>> @@ -170,7 +170,7 @@ my $tests = [
>>>  	name => "efidisk",
>>>  	parameters => [ "/usr/share/kvm/OVMF_VARS-pure-efi.fd", "local:$vmid/vm-$vmid-disk-0.raw", 1024*10, undef, 0 ],
>>>  	expected => [
>>> -	    "/usr/bin/qemu-img", "convert", "-p", "-n", "-f", "raw", "-O", "raw",
>>> +	    "/usr/bin/qemu-img", "convert", "-p", "-n", "-O", "raw",
>>>  	    "/usr/share/kvm/OVMF_VARS-pure-efi.fd",
>>>  	    "/var/lib/vz/images/$vmid/vm-$vmid-disk-0.raw",
>>>  	]
>>> @@ -179,7 +179,7 @@ my $tests = [
>>>  	name => "efi2zos",
>>>  	parameters => [ "/usr/share/kvm/OVMF_VARS-pure-efi.fd", "zfs-over-iscsi:vm-$vmid-disk-0", 1024*10, undef, 0 ],
>>>  	expected => [
>>> -	    "/usr/bin/qemu-img", "convert", "-p", "-n", "-f", "raw", "--target-image-opts",
>>> +	    "/usr/bin/qemu-img", "convert", "-p", "-n", "--target-image-opts",
>>>  	    "/usr/share/kvm/OVMF_VARS-pure-efi.fd",
>>>  	    "file.driver=iscsi,file.transport=tcp,file.initiator-name=foobar,file.portal=127.0.0.1,file.target=iqn.2019-10.org.test:foobar,file.lun=1,driver=raw",
>>>  	]
>>>
>>
>>
>>






More information about the pve-devel mailing list