[pve-devel] [PATCH v2 guest-common 07/28] snapshot_foreach_volume: Allow different volume selections

Fabian Ebner f.ebner at proxmox.com
Mon Feb 24 13:43:57 CET 2020


by introducing a parameter $opts, which should contain
'include_<TYPE>'-flags. Also added @param and removed the
'__'-prefix for future use from outside the module.

Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
---
 PVE/AbstractConfig.pm | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/PVE/AbstractConfig.pm b/PVE/AbstractConfig.pm
index 5c449f6..9ce3d12 100644
--- a/PVE/AbstractConfig.pm
+++ b/PVE/AbstractConfig.pm
@@ -501,9 +501,12 @@ sub __snapshot_rollback_get_unused {
     die "abstract method - implement me\n";
 }
 
-# Iterate over all configured volumes, calling $func for each key/value pair.
-sub __snapshot_foreach_volume {
-    my ($class, $conf, $func) = @_;
+# Iterate over all configured volumes, calling $func for each key/value pair
+# with additional parameters @param.
+# By default unused volumes as well as special volumes like vmstate are excluded.
+# They can be included in the iteration by setting $opts->{include_TYPE}
+sub snapshot_foreach_volume {
+    my ($class, $conf, $opts, $func, @param) = @_;
 
     die "abstract method - implement me\n";
 }
@@ -653,7 +656,7 @@ sub snapshot_create {
 
 	$class->__snapshot_create_vol_snapshots_hook($vmid, $snap, $running, "before");
 
-	$class->__snapshot_foreach_volume($snap, sub {
+	$class->snapshot_foreach_volume($snap, undef, sub {
 	    my ($vs, $volume) = @_;
 
 	    $class->__snapshot_create_vol_snapshot($vmid, $vs, $volume, $snapname);
@@ -745,7 +748,7 @@ sub snapshot_delete {
     };
 
     # now remove all volume snapshots
-    $class->__snapshot_foreach_volume($snap, sub {
+    $class->snapshot_foreach_volume($snap, undef, sub {
 	my ($vs, $volume) = @_;
 
 	return if $snapname eq 'vzdump' && $vs ne 'rootfs' && !$volume->{backup};
@@ -819,7 +822,7 @@ sub snapshot_rollback {
     
     my $snap = &$get_snapshot_config();
 
-    $class->__snapshot_foreach_volume($snap, sub {
+    $class->snapshot_foreach_volume($snap, undef, sub {
 	my ($vs, $volume) = @_;
 
 	$class->__snapshot_rollback_vol_possible($volume, $snapname);
@@ -872,7 +875,7 @@ sub snapshot_rollback {
 
     $class->lock_config($vmid, $updatefn);
 
-    $class->__snapshot_foreach_volume($snap, sub {
+    $class->snapshot_foreach_volume($snap, undef, sub {
 	my ($vs, $volume) = @_;
 
 	$class->__snapshot_rollback_vol_rollback($volume, $snapname);
-- 
2.20.1





More information about the pve-devel mailing list