From: Fiona Ebner <f.ebner@proxmox.com>
To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com>,
"Fabian Grünbichler" <f.gruenbichler@proxmox.com>
Subject: Re: [pve-devel] [PATCH qemu-server 6/6] fix #6543: use qcow2 'discard-no-unref' option when using snapshot-as-volume-chain
Date: Fri, 25 Jul 2025 10:24:11 +0200 [thread overview]
Message-ID: <62d2d0de-e657-41dc-b552-52f256dd6eb0@proxmox.com> (raw)
In-Reply-To: <1753428793.n5phbfd5ll.astroid@yuna.none>
Am 25.07.25 um 9:39 AM schrieb Fabian Grünbichler:
> On July 24, 2025 3:59 pm, Fiona Ebner wrote:
>> diff --git a/src/PVE/QemuServer/QemuImage.pm b/src/PVE/QemuServer/QemuImage.pm
>> index 026c24e9..7f6d5f01 100644
>> --- a/src/PVE/QemuServer/QemuImage.pm
>> +++ b/src/PVE/QemuServer/QemuImage.pm
>> @@ -3,6 +3,9 @@ package PVE::QemuServer::QemuImage;
>> use strict;
>> use warnings;
>>
>> +use Fcntl qw(S_ISBLK);
>> +use File::stat;
>> +
>> use PVE::Format qw(render_bytes);
>> use PVE::Storage;
>> use PVE::Tools;
>> @@ -27,6 +30,18 @@ sub convert_iscsi_path {
>> die "cannot convert iscsi path '$path', unknown format\n";
>> }
>>
>> +my sub qcow2_target_image_opts {
>> + my ($path, @qcow2_opts) = @_;
>> +
>> + my $st = File::stat::stat($path) or die "stat for '$path' failed - $!\n";
>
> right now this is only called for PVE-managed volumes.. so we could
> actually call qemu_blockdev_options instead in `convert` below, and use
> the driver (and possibly other things?) from there?
I guess that could also be done for iscsi as a next step and we could go
on and always use target-image-opts constructed from the return value of
qemu_blockdev_options(). Sadly, target-image-opts doesn't take JSON as
input AFAICS, so the conversion to string is a bit more cumbersome.
>
>> +
>> + my $driver = S_ISBLK($st->mode) ? 'host_device' : 'file';
>> +
>> + my $qcow2_opts_str = ',' . join(',', @qcow2_opts);
>> +
>> + return "driver=qcow2$qcow2_opts_str,file.driver=$driver,file.filename=$path";
>> +}
>> +
>> # The possible options are:
>> # bwlimit - The bandwidth limit in KiB/s.
>> # is-zero-initialized - If the destination image is zero-initialized.
>> @@ -71,6 +86,7 @@ sub convert {
>> my $dst_format = checked_volume_format($storecfg, $dst_volid);
>> my $dst_path = PVE::Storage::path($storecfg, $dst_volid);
>> my $dst_is_iscsi = ($dst_path =~ m|^iscsi://|);
>> + my $dst_needs_discard_no_unref = $dst_scfg->{'snapshot-as-volume-chain'};
>
> && $dst_format eq 'qcow2'
>
> as above in Blockdev.pm?
Yes, nice catch!
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-07-25 8:23 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-24 13:59 [pve-devel] [PATCH-SERIES qemu-server 0/6] blockdev and snapshot-as-volume-chain on LVM fixes Fiona Ebner
2025-07-24 13:59 ` [pve-devel] [PATCH qemu-server 1/6] blockdev: helper to add common options Fiona Ebner
2025-07-24 13:59 ` [pve-devel] [PATCH qemu-server 2/6] blockdev: fix discard Fiona Ebner
2025-07-24 13:59 ` [pve-devel] [PATCH qemu-server 3/6] tests: image convert: avoid hard-coded VM ID in result Fiona Ebner
2025-07-24 13:59 ` [pve-devel] [PATCH qemu-server 4/6] tests: image convert: properly set snapshot-as-volume-chain option Fiona Ebner
2025-07-24 13:59 ` [pve-devel] [PATCH qemu-server 5/6] tests: image convert: add tests where storages with 'snapshot-as-volume-chain' are the target Fiona Ebner
2025-07-24 13:59 ` [pve-devel] [PATCH qemu-server 6/6] fix #6543: use qcow2 'discard-no-unref' option when using snapshot-as-volume-chain Fiona Ebner
2025-07-24 18:01 ` DERUMIER, Alexandre via pve-devel
2025-07-25 7:38 ` Fabian Grünbichler
2025-07-25 8:24 ` Fiona Ebner [this message]
2025-07-25 7:40 ` [pve-devel] [PATCH-SERIES qemu-server 0/6] blockdev and snapshot-as-volume-chain on LVM fixes Fabian Grünbichler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=62d2d0de-e657-41dc-b552-52f256dd6eb0@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=f.gruenbichler@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.