Added code to abort a snapshot rollback in ZFS if the snapshot selected is not the most recent. This is to avoid lu deletion when trying to rollback to a snapshot that isn't the newest.

Signed-off-by: Chris Allen <Chris Allen>
This commit is contained in:
Chris Allen
2014-03-11 17:32:17 -07:00
committed by Dietmar Maurer
parent 454c15e270
commit a315b9ff56

View File

@ -607,6 +607,21 @@ sub volume_snapshot {
sub volume_snapshot_rollback {
my ($class, $scfg, $storeid, $volname, $snap) = @_;
# abort rollback if snapshot is not the latest
my @params = ('-t', 'snapshot', '-o', 'name', '-s', 'creation');
my $text = zfs_request($scfg, undef, 'list', @params);
my @snapshots = split(/\n/, $text);
my $recentsnap = undef;
foreach (@snapshots) {
if (/$scfg->{pool}\/$volname/) {
s/^.*@//;
$recentsnap = $_;
}
}
if ($snap ne $recentsnap) {
die "cannot rollback, more recent snapshots exist\n";
}
zfs_delete_lu($scfg, $volname);
zfs_request($scfg, undef, 'rollback', "$scfg->{pool}/$volname\@$snap");