[pve-devel] [PATCH container] Remove an unused volume from the config if it is pending to be re-added
Fabian Ebner
f.ebner at proxmox.com
Tue Nov 26 12:51:38 CET 2019
This makes the behavior more similar to what we do for VM configs.
If we have a pending change re-adding an unused volume as a mount point, then
the unused volume will not show up anymore. And if we revert such a change, the
volume will re-appear as an unused volume.
Like this a user with a running container won't be able to re-add an unused
volume multiple times via the web GUI.
Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
---
src/PVE/LXC/Config.pm | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index ffc5911..c2ae166 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -839,12 +839,14 @@ sub write_pct_config {
delete $conf->{snapstate}; # just to be sure
my $volidlist = PVE::LXC::Config->get_vm_volumes($conf);
+ push @$volidlist, @{PVE::LXC::Config->get_vm_volumes($conf->{pending})};
my $used_volids = {};
foreach my $vid (@$volidlist) {
$used_volids->{$vid} = 1;
}
# remove 'unusedX' settings if the volume is still used
+ # or if it's pending to be re-added
foreach my $key (keys %$conf) {
my $value = $conf->{$key};
if ($key =~ m/^unused/ && $used_volids->{$value}) {
@@ -904,6 +906,15 @@ sub update_pct_config {
my $storage_cfg = PVE::Storage::config();
foreach my $opt (@$revert) {
+ # unused volume that was pending to become a mount point should show up again
+ if ($opt =~ m/^mp(\d+)$/) {
+ my $mp = eval { $class->parse_ct_mountpoint($conf->{pending}->{$opt}); };
+ if (defined($mp) && $mp->{type} eq 'volume') {
+ $class->add_unused_volume($conf, $mp->{volume})
+ if !$class->is_volume_in_use($conf, $conf->{pending}->{$opt}, 1, 0);
+ }
+ }
+
delete $conf->{pending}->{$opt};
$class->remove_from_pending_delete($conf, $opt); # also remove from deletion queue
}
--
2.20.1
More information about the pve-devel
mailing list