<div dir="ltr">Indeed.  It's also spelled entirely without the 'l' in <span style="font-size:13.1999998092651px;line-height:26.3999996185303px">PVE/Storage/Plugin.pm and </span><span style="font-size:13.1999998092651px;line-height:26.3999996185303px">PVE/Storage/ZFSPoolPlugin.pm, which is probably not intended.</span><br></div><br><div class="gmail_quote">On Wed Feb 11 2015 at 12:31:11 PM Alexandre DERUMIER <<a href="mailto:aderumier@odiso.com">aderumier@odiso.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I think the english word should be "volume_rollback_is_possible" , not "volume_rollback_is_possibel"<br>
<br>
<br>
----- Mail original -----<br>
De: "Wolfgang Link" <<a href="mailto:w.link@proxmox.com" target="_blank">w.link@proxmox.com</a>><br>
À: "pve-devel" <<a href="mailto:pve-devel@pve.proxmox.com" target="_blank">pve-devel@pve.proxmox.com</a>><br>
Envoyé: Mercredi 11 Février 2015 13:33:15<br>
Objet: [pve-devel] [PATCH] Storage: add methode<br>
<br>
add methode volume_rollback_is_possibel and refactor<br>
Improve error handling<br>
If snapshot is not revetable catch it before vm will lock and shutdown.<br>
This is the case if zfs has an younger snapshot.<br>
<br>
Signed-off-by: Wolfgang Link <<a href="mailto:w.link@proxmox.com" target="_blank">w.link@proxmox.com</a>><br>
---<br>
PVE/Storage.pm | 19 +++++++++++++++----<br>
PVE/Storage/Plugin.pm | 6 ++++++<br>
PVE/Storage/ZFSPlugin.pm | 6 ------<br>
PVE/Storage/ZFSPoolPlugin.pm | 11 ++++++++---<br>
4 files changed, 29 insertions(+), 13 deletions(-)<br>
<br>
diff --git a/PVE/Storage.pm b/PVE/Storage.pm<br>
index 8711710..c4b9a68 100755<br>
--- a/PVE/Storage.pm<br>
+++ b/PVE/Storage.pm<br>
@@ -144,6 +144,21 @@ sub volume_resize {<br>
}<br>
}<br>
<br>
+sub volume_rollback_is_possibel {<br>
+ my ($cfg, $volid, $snap) = @_;<br>
+<br>
+ my ($storeid, $volname) = parse_volume_id($volid, 1);<br>
+ if ($storeid) {<br>
+ my $scfg = storage_config($cfg, $storeid);<br>
+ my $plugin = PVE::Storage::Plugin->lookup($<u></u>scfg->{type});<br>
+ return $plugin->volume_rollback_is_<u></u>possibe($scfg, $storeid, $volname, $snap);<br>
+ } elsif ($volid =~ m|^(/.+)$| && -e $volid) {<br>
+ die "snapshot rollback device is not possible";<br>
+ } else {<br>
+ die "can't snapshot";<br>
+ }<br>
+}<br>
+<br>
sub volume_snapshot {<br>
my ($cfg, $volid, $snap, $running) = @_;<br>
<br>
@@ -167,10 +182,6 @@ sub volume_snapshot_rollback {<br>
my $scfg = storage_config($cfg, $storeid);<br>
my $plugin = PVE::Storage::Plugin->lookup($<u></u>scfg->{type});<br>
return $plugin->volume_snapshot_<u></u>rollback($scfg, $storeid, $volname, $snap);<br>
- } elsif ($volid =~ m|^(/.+)$| && -e $volid) {<br>
- die "snapshot rollback device is not possible";<br>
- } else {<br>
- die "can't snapshot";<br>
}<br>
}<br>
<br>
diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm<br>
index 15c23d4..4549f9f 100644<br>
--- a/PVE/Storage/Plugin.pm<br>
+++ b/PVE/Storage/Plugin.pm<br>
@@ -656,6 +656,12 @@ sub volume_snapshot {<br>
return undef;<br>
}<br>
<br>
+sub volume_rollback_is_possibe {<br>
+ my ($class, $scfg, $storeid, $volname, $snap) = @_;<br>
+<br>
+ return 1;<br>
+}<br>
+<br>
sub volume_snapshot_rollback {<br>
my ($class, $scfg, $storeid, $volname, $snap) = @_;<br>
<br>
diff --git a/PVE/Storage/ZFSPlugin.pm b/PVE/Storage/ZFSPlugin.pm<br>
index 77394b9..f020985 100644<br>
--- a/PVE/Storage/ZFSPlugin.pm<br>
+++ b/PVE/Storage/ZFSPlugin.pm<br>
@@ -310,12 +310,6 @@ sub volume_resize {<br>
sub volume_snapshot_rollback {<br>
my ($class, $scfg, $storeid, $volname, $snap) = @_;<br>
<br>
- # abort rollback if snapshot is not the latest<br>
- my $recentsnap = $class->zfs_get_latest_<u></u>snapshot($scfg, $volname);<br>
- if ($snap ne $recentsnap) {<br>
- die "cannot rollback, more recent snapshots exist\n";<br>
- }<br>
-<br>
$class->zfs_delete_lu($scfg, $volname);<br>
<br>
$class->zfs_request($class, $scfg, undef, 'rollback', "$scfg->{pool}/$volname\@$<u></u>snap");<br>
diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm<br>
index 754f29f..0d38012 100644<br>
--- a/PVE/Storage/ZFSPoolPlugin.pm<br>
+++ b/PVE/Storage/ZFSPoolPlugin.pm<br>
@@ -411,13 +411,18 @@ sub volume_snapshot_delete {<br>
sub volume_snapshot_rollback {<br>
my ($class, $scfg, $storeid, $volname, $snap) = @_;<br>
<br>
- # abort rollback if snapshot is not the latest<br>
+ zfs_request($class, $scfg, undef, 'rollback', "$scfg->{pool}/$volname\@$<u></u>snap");<br>
+}<br>
+<br>
+sub volume_rollback_is_possibe {<br>
+ my ($class, $scfg, $storeid, $volname, $snap) = @_;<br>
+<br>
my $recentsnap = $class->zfs_get_latest_<u></u>snapshot($scfg, $volname);<br>
if ($snap ne $recentsnap) {<br>
- die "cannot rollback, more recent snapshots exist\n";<br>
+ die "cannot rollback, more recent snapshots exist\n";<br>
}<br>
<br>
- zfs_request($class, $scfg, undef, 'rollback', "$scfg->{pool}/$volname\@$<u></u>snap");<br>
+ return 1;<br>
}<br>
<br>
sub activate_storage {<br>
--<br>
1.7.10.4<br>
<br>
<br>
______________________________<u></u>_________________<br>
pve-devel mailing list<br>
<a href="mailto:pve-devel@pve.proxmox.com" target="_blank">pve-devel@pve.proxmox.com</a><br>
<a href="http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel" target="_blank">http://pve.proxmox.com/cgi-<u></u>bin/mailman/listinfo/pve-devel</a><br>
______________________________<u></u>_________________<br>
pve-devel mailing list<br>
<a href="mailto:pve-devel@pve.proxmox.com" target="_blank">pve-devel@pve.proxmox.com</a><br>
<a href="http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel" target="_blank">http://pve.proxmox.com/cgi-<u></u>bin/mailman/listinfo/pve-devel</a><br>
</blockquote></div>