diff --git a/ApiChangeLog b/ApiChangeLog index 6baedd2..2a01e3f 100644 --- a/ApiChangeLog +++ b/ApiChangeLog @@ -22,6 +22,10 @@ Future changes should be documented in here. Feel free to request allowing more drivers or options on the pve-devel mailing list based on your needs. +* Add `running` parameter to `volume_snapshot()` + The parameter *can* be used if some extra actions need to be done at the storage + layer when the snapshot has already be done at qemu level when the vm is running. + ## Version 11: * Allow declaring storage features via plugin data diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm index 7861bf6..7f2da80 100755 --- a/src/PVE/Storage.pm +++ b/src/PVE/Storage.pm @@ -449,13 +449,13 @@ sub volume_rollback_is_possible { } sub volume_snapshot { - my ($cfg, $volid, $snap) = @_; + my ($cfg, $volid, $snap, $running) = @_; my ($storeid, $volname) = parse_volume_id($volid, 1); if ($storeid) { my $scfg = storage_config($cfg, $storeid); my $plugin = PVE::Storage::Plugin->lookup($scfg->{type}); - return $plugin->volume_snapshot($scfg, $storeid, $volname, $snap); + return $plugin->volume_snapshot($scfg, $storeid, $volname, $snap, $running); } elsif ($volid =~ m|^(/.+)$| && -e $volid) { die "snapshot file/device '$volid' is not possible\n"; } else { diff --git a/src/PVE/Storage/ESXiPlugin.pm b/src/PVE/Storage/ESXiPlugin.pm index ab5242d..e655d7b 100644 --- a/src/PVE/Storage/ESXiPlugin.pm +++ b/src/PVE/Storage/ESXiPlugin.pm @@ -555,7 +555,7 @@ sub volume_size_info { } sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; die "creating snapshots is not supported for $class\n"; } diff --git a/src/PVE/Storage/ISCSIDirectPlugin.pm b/src/PVE/Storage/ISCSIDirectPlugin.pm index 62e9026..93cfd3c 100644 --- a/src/PVE/Storage/ISCSIDirectPlugin.pm +++ b/src/PVE/Storage/ISCSIDirectPlugin.pm @@ -232,7 +232,7 @@ sub volume_resize { } sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; die "volume snapshot is not possible on iscsi device\n"; } diff --git a/src/PVE/Storage/LVMPlugin.pm b/src/PVE/Storage/LVMPlugin.pm index 83a4ca9..3d00d61 100644 --- a/src/PVE/Storage/LVMPlugin.pm +++ b/src/PVE/Storage/LVMPlugin.pm @@ -702,7 +702,7 @@ sub volume_size_info { } sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; die "lvm snapshot is not implemented"; } diff --git a/src/PVE/Storage/LvmThinPlugin.pm b/src/PVE/Storage/LvmThinPlugin.pm index fe8a986..a6caae7 100644 --- a/src/PVE/Storage/LvmThinPlugin.pm +++ b/src/PVE/Storage/LvmThinPlugin.pm @@ -353,7 +353,7 @@ sub create_base { # sub volume_resize {} reuse code from parent class sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; my $vg = $scfg->{vgname}; my $snapvol = "snap_${volname}_$snap"; diff --git a/src/PVE/Storage/PBSPlugin.pm b/src/PVE/Storage/PBSPlugin.pm index 00170f5..45edc46 100644 --- a/src/PVE/Storage/PBSPlugin.pm +++ b/src/PVE/Storage/PBSPlugin.pm @@ -966,7 +966,7 @@ sub volume_resize { } sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; die "volume snapshot is not possible on pbs device"; } diff --git a/src/PVE/Storage/Plugin.pm b/src/PVE/Storage/Plugin.pm index ed310a2..da26c0c 100644 --- a/src/PVE/Storage/Plugin.pm +++ b/src/PVE/Storage/Plugin.pm @@ -1314,7 +1314,7 @@ sub volume_resize { } sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; die "can't snapshot this image format\n" if $volname !~ m/\.(qcow2|qed)$/; diff --git a/src/PVE/Storage/RBDPlugin.pm b/src/PVE/Storage/RBDPlugin.pm index 988840f..692a76a 100644 --- a/src/PVE/Storage/RBDPlugin.pm +++ b/src/PVE/Storage/RBDPlugin.pm @@ -868,7 +868,7 @@ sub volume_resize { } sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; my ($vtype, $name, $vmid) = $class->parse_volname($volname); diff --git a/src/PVE/Storage/ZFSPoolPlugin.pm b/src/PVE/Storage/ZFSPoolPlugin.pm index 979cf2c..9cdfa68 100644 --- a/src/PVE/Storage/ZFSPoolPlugin.pm +++ b/src/PVE/Storage/ZFSPoolPlugin.pm @@ -480,7 +480,7 @@ sub volume_size_info { } sub volume_snapshot { - my ($class, $scfg, $storeid, $volname, $snap) = @_; + my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; my $vname = ($class->parse_volname($volname))[1];