From: "Michael Köppl" <m.koeppl@proxmox.com>
To: Fiona Ebner <f.ebner@proxmox.com>,
Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH container v6 3/4] fix #3711: lxc: allow removing unused mp if storage no longer exists
Date: Tue, 27 May 2025 11:34:17 +0200 [thread overview]
Message-ID: <8f515019-1d9d-4760-a027-4b7210d7f37d@proxmox.com> (raw)
In-Reply-To: <3cb1c0a2-19d2-4fdc-a8a7-b4a2835d423b@proxmox.com>
On 5/20/25 16:03, Fiona Ebner wrote:
>> @@ -1558,13 +1564,17 @@ sub vmconfig_apply_pending {
>> next if $selection && !$selection->{$opt};
>> eval {
>> my $mp = $class->parse_volume($opt, $conf->{$opt});
>> + my ($storeid, undef) = PVE::Storage::parse_volume_id($mp->{volume});
>>
>> if ($opt =~ m/^mp(\d+)$/) {
>> if ($mp->{type} eq 'volume') {
>> $class->add_unused_volume($conf, $mp->{volume})
>> if !$class->is_volume_in_use($conf, $conf->{$opt}, 1, 1);
>> }
>> - } elsif ($opt =~ m/^unused(\d+)$/) {
>> + } elsif (
>> + $opt =~ m/^unused(\d+)$/
>> + && PVE::Storage::storage_config($storecfg, $storeid, 1)
>> + ) {
>> # $mp->{volume} is used for is_volume_in_use() because parse_volume()
>> # knows about 'unused*' and will return a valid volume ID whereas
>> # $conf->{$opt} is not guaranteed to contain a valid volume ID in this
>
> Can we put the parsing/check in delete_mountpoint_volume() itself
> instead? And maybe print an informational message if the storage didn't
> exist anymore. That would also cover the caller in patch 1/4, although
> we still might want to use the eval+print there for other kinds of errors.
I think moving the check if the storage exists inside definitely makes
sense here. Thanks for the suggestion. I adapted the
delete_mountpoint_volume() for a v7, but opted to keep the parsing of
the volume ID in vmconfig_apply_pending() and
vmconfig_hotplug_pending(). destroy_lxc_container() uses
foreach_volume_full() to iterate over all its mountpoints, which uses
parse_volume() internally. So the $volume input used there is already
what we want, as opposed to the $conf and $opt arguments used by the
other 2 callers. Moving the parsing into delete_mountpoint_volume()
would require changing other parts of the implementation (to get the
required inputs for all 3 callers) for little benefit. One way to avoid
that would be a signature such as
my ($storage_cfg, $vmid, $volid, $conf, $opt) = @_;
and using $conf->{$opt} to call parse_volume() if $volid is undef. But I
think that's not very transparent to the caller.
Also, I don't know if you meant the is_volume_in_use() checks as well,
but I think keeping those where they are makes it very obvious from the
code that the delete only happens if the volume is not in use.
Would love your input on this, maybe I'm just missing something.
_______________________________________________
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-05-27 9:34 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-20 9:08 [pve-devel] [PATCH container/qemu-server v6 0/7] fix #3711 and adapt drive detach/remove behavior Michael Köppl
2025-05-20 9:08 ` [pve-devel] [PATCH container v6 1/4] fix #3711: lxc: print warning if storage for mounted volume does not exist anymore Michael Köppl
2025-05-20 13:33 ` Fiona Ebner
2025-05-22 6:08 ` Thomas Lamprecht
2025-05-27 7:37 ` Michael Köppl
2025-05-22 6:17 ` Thomas Lamprecht
2025-05-27 7:29 ` Michael Köppl via pve-devel
2025-05-20 9:08 ` [pve-devel] [PATCH container v6 2/4] config: apply_pending: get unused volid through parse_volume() Michael Köppl
2025-05-20 13:45 ` Fiona Ebner
2025-05-20 13:49 ` Fiona Ebner
2025-05-20 9:08 ` [pve-devel] [PATCH container v6 3/4] fix #3711: lxc: allow removing unused mp if storage no longer exists Michael Köppl
2025-05-20 14:03 ` Fiona Ebner
2025-05-27 9:34 ` Michael Köppl [this message]
2025-05-27 10:03 ` Fiona Ebner
2025-05-20 9:08 ` [pve-devel] [PATCH container v6 4/4] add linked clone check when destroying container Michael Köppl
2025-05-20 14:13 ` Fiona Ebner
2025-05-20 9:08 ` [pve-devel] [PATCH qemu-server v6 1/3] adapt linked clone check to not die if an error occurs during check Michael Köppl
2025-05-21 10:49 ` Fiona Ebner
2025-05-20 9:08 ` [pve-devel] [PATCH qemu-server v6 2/3] print warning for PVE::Storage::path errors instead of failing Michael Köppl
2025-05-21 11:02 ` Fiona Ebner
2025-05-20 9:08 ` [pve-devel] [PATCH qemu-server v6 3/3] mark volumes pending detach as unused if storage was removed Michael Köppl
2025-05-21 11:16 ` Fiona Ebner
2025-05-26 12:24 ` Michael Köppl
2025-05-27 16:05 ` [pve-devel] superseded: [PATCH container/qemu-server v6 0/7] fix #3711 and adapt drive detach/remove behavior Michael Köppl
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=8f515019-1d9d-4760-a027-4b7210d7f37d@proxmox.com \
--to=m.koeppl@proxmox.com \
--cc=f.ebner@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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal