From 72e6bc2078816d1d5d3e3072f7554cb8f6f0370e Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Tue, 17 Oct 2017 12:58:56 +0200 Subject: [PATCH] config: is_volume_in_use: ability to search only snapshots --- src/PVE/LXC/Config.pm | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm index 0969862..7b27be1 100644 --- a/src/PVE/LXC/Config.pm +++ b/src/PVE/LXC/Config.pm @@ -1175,8 +1175,8 @@ sub classify_mountpoint { return 'volume'; } -sub is_volume_in_use { - my ($class, $config, $volid, $include_snapshots) = @_; +my $is_volume_in_use = sub { + my ($class, $config, $volid) = @_; my $used = 0; $class->foreach_mountpoint($config, sub { @@ -1185,14 +1185,26 @@ sub is_volume_in_use { $used = $mountpoint->{type} eq 'volume' && $mountpoint->{volume} eq $volid; }); - my $snapshots = $config->{snapshots}; - if ($include_snapshots && $snapshots) { + return $used; +}; + +sub is_volume_in_use_by_snapshots { + my ($class, $config, $volid) = @_; + + if (my $snapshots = $config->{snapshots}) { foreach my $snap (keys %$snapshots) { - $used ||= $class->is_volume_in_use($snapshots->{$snap}, $volid); + return 1 if $is_volume_in_use->($class, $snapshots->{$snap}, $volid); } } - return $used; + return 0; +}; + +sub is_volume_in_use { + my ($class, $config, $volid, $include_snapshots) = @_; + return 1 if $is_volume_in_use->($class, $config, $volid); + return 1 if $include_snapshots && $class->is_volume_in_use_by_snapshots($config, $volid); + return 0; } sub has_dev_console { -- 2.39.5