mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-13 21:15:25 +00:00
QemuServer: check snapshot befor rollback
this will check, if it is possibel to rollback a snapshot befor VM will shutdown and get locked. Signed-off-by: Wolfgang Link <w.link@proxmox.com> Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
This commit is contained in:
parent
6e62a21f17
commit
ba4eea15e6
@ -5551,21 +5551,40 @@ my $snapshot_commit = sub {
|
||||
sub snapshot_rollback {
|
||||
my ($vmid, $snapname) = @_;
|
||||
|
||||
my $snap;
|
||||
|
||||
my $prepare = 1;
|
||||
|
||||
my $storecfg = PVE::Storage::config();
|
||||
|
||||
my $updatefn = sub {
|
||||
my $conf = load_config($vmid);
|
||||
|
||||
my $conf = load_config($vmid);
|
||||
my $get_snapshot_config = sub {
|
||||
|
||||
die "you can't rollback if vm is a template\n" if is_template($conf);
|
||||
|
||||
$snap = $conf->{snapshots}->{$snapname};
|
||||
my $res = $conf->{snapshots}->{$snapname};
|
||||
|
||||
die "snapshot '$snapname' does not exist\n" if !defined($snap);
|
||||
die "snapshot '$snapname' does not exist\n" if !defined($res);
|
||||
|
||||
return $res;
|
||||
};
|
||||
|
||||
my $snap = &$get_snapshot_config();
|
||||
|
||||
foreach_drive($snap, sub {
|
||||
my ($ds, $drive) = @_;
|
||||
|
||||
return if drive_is_cdrom($drive);
|
||||
|
||||
my $volid = $drive->{file};
|
||||
|
||||
PVE::Storage::volume_rollback_is_possible($storecfg, $volid, $snapname);
|
||||
});
|
||||
|
||||
my $updatefn = sub {
|
||||
|
||||
$conf = load_config($vmid);
|
||||
|
||||
$snap = &$get_snapshot_config();
|
||||
|
||||
die "unable to rollback to incomplete snapshot (snapstate = $snap->{snapstate})\n"
|
||||
if $snap->{snapstate};
|
||||
|
Loading…
Reference in New Issue
Block a user