]> git.proxmox.com Git - pve-container.git/commitdiff
config: is_volume_in_use: ability to search only snapshots
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 17 Oct 2017 10:58:56 +0000 (12:58 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 13 Mar 2018 13:09:51 +0000 (14:09 +0100)
src/PVE/LXC/Config.pm

index 096986204c1f8b2f8d4a4be835229886960b431d..7b27be17ff42afd4a2755fd5a018c1dbab34b63b 100644 (file)
@@ -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 {