From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id EC0C21FF183 for ; Wed, 30 Jul 2025 17:02:38 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7BB15128A8; Wed, 30 Jul 2025 17:04:04 +0200 (CEST) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Wed, 30 Jul 2025 17:03:17 +0200 Message-ID: <20250730150325.138087-4-f.ebner@proxmox.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250730150325.138087-1-f.ebner@proxmox.com> References: <20250730150325.138087-1-f.ebner@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1753887798224 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.026 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH qemu-server 3/3] image convert: make using zeroinit with target-image-opts work X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Also add a test to witness this combination. Signed-off-by: Fiona Ebner --- 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