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

Reply via email to