Also add a test to witness this combination. Signed-off-by: Fiona Ebner <f.eb...@proxmox.com> --- src/PVE/QemuServer/QemuImage.pm | 17 +++++++++++------ src/test/run_qemu_img_convert_tests.pl | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/src/PVE/QemuServer/QemuImage.pm b/src/PVE/QemuServer/QemuImage.pm index f2cadd69..71be3abb 100644 --- a/src/PVE/QemuServer/QemuImage.pm +++ b/src/PVE/QemuServer/QemuImage.pm @@ -33,16 +33,16 @@ sub convert_iscsi_path { } my sub qcow2_target_image_opts { - my ($storecfg, $drive, @qcow2_opts) = @_; + my ($storecfg, $drive, $qcow2_opts, $zeroinit) = @_; # There is no machine version, the qemu-img binary version is what's important. my $version = PVE::QemuServer::Helpers::kvm_user_version(); + my $blockdev_opts = { 'no-throttle' => 1 }; + $blockdev_opts->{'zero-initialized'} = 1 if $zeroinit; + my $blockdev = PVE::QemuServer::Blockdev::generate_drive_blockdev( - $storecfg, - $drive, - $version, - { 'no-throttle' => 1 }, + $storecfg, $drive, $version, $blockdev_opts, ); my $opts = []; @@ -166,7 +166,12 @@ sub convert { # don't use any other drive options, those are intended for use with a running VM and just # use scsi0 as a dummy interface+index for now my $dst_drive = { file => $dst_volid, interface => 'scsi', index => 0 }; - $dst_path = qcow2_target_image_opts($storecfg, $dst_drive, 'discard-no-unref=true'); + $dst_path = qcow2_target_image_opts( + $storecfg, + $dst_drive, + ['discard-no-unref=true'], + $opts->{'is-zero-initialized'}, + ); } else { push @$cmd, '-O', $dst_format; } diff --git a/src/test/run_qemu_img_convert_tests.pl b/src/test/run_qemu_img_convert_tests.pl index 393fc4a8..8a0ad283 100755 --- a/src/test/run_qemu_img_convert_tests.pl +++ b/src/test/run_qemu_img_convert_tests.pl @@ -548,6 +548,27 @@ my $tests = [ . ",file.filename=/var/lib/vzsnapext/images/$vmid/vm-$vmid-disk-target.qcow2", ], }, + { + name => "qcow2_external_snapshot_target_zeroinit", + parameters => [ + "local:$vmid/vm-$vmid-disk-0.raw", + "localsnapext:$vmid/vm-$vmid-disk-target.qcow2", + 1024 * 10, + { 'is-zero-initialized' => 1 }, + ], + expected => [ + "/usr/bin/qemu-img", + "convert", + "-p", + "-n", + "-f", + "raw", + "--target-image-opts", + "/var/lib/vz/images/$vmid/vm-$vmid-disk-0.raw", + "driver=zeroinit,file.discard-no-unref=true,file.driver=qcow2,file.file.driver=file" + . ",file.file.filename=/var/lib/vzsnapext/images/$vmid/vm-$vmid-disk-target.qcow2", + ], + }, { name => "lvmqcow2_external_snapshot_target", parameters => [ -- 2.47.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel