Am 25.11.22 um 15:40 schrieb Stefan Hrdlicka: > prevent partial storage deletion if the template has a linked clone > container >
Nit: not too important, but you could mention that we already do the same for VMs > Signed-off-by: Stefan Hrdlicka <s.hrdli...@proxmox.com> > --- > src/PVE/LXC.pm | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm > index fe68f75..7164462 100644 > --- a/src/PVE/LXC.pm > +++ b/src/PVE/LXC.pm > @@ -865,6 +865,18 @@ sub destroy_lxc_container { > $purge_unreferenced, $ignore_storage_errors) = @_; > > my $volids = {}; > + > + if ($conf->{template}) { > + PVE::LXC::Config->foreach_volume_full($conf, {incldue_unused => 1}, sub > { > + my ($ms, $mountpoint) = @_; > + my $volid = $mountpoint->{volume}; > + return if !$volid || $volid =~ m|^/|; Could/should use PVE::LXC::Config->classify_mountpoint($volume) ne 'volume'; rather than $volid =~ m|^/|; to be more future-proof. > + my $result; > + eval{ $result = PVE::Storage::volume_is_base_and_used($storage_cfg, > $volid) }; Style nit: my $result = eval { PVE::... }; saves a line > + die "base volume '$volid' is still in use by linked cloned\n" if > $result; If the check dies, we cannot tell if the volume is actually an in-use base volume. So we shouldn't just move on with the removal. The error should be propagated except if $ignore_storage_errors is true. > + }); > + } > + > my $remove_volume = sub { > my ($ms, $mountpoint) = @_; > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel