mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-05-03 12:42:56 +00:00
do not copy list of unused disk into snapshot config
This commit is contained in:
parent
f1baf1df42
commit
ef59d1ca65
@ -3557,6 +3557,38 @@ sub restore_archive {
|
|||||||
# So we try to avoid locking the file and use 'lock' variable
|
# So we try to avoid locking the file and use 'lock' variable
|
||||||
# inside the config file instead.
|
# inside the config file instead.
|
||||||
|
|
||||||
|
my $snapshot_copy_config = sub {
|
||||||
|
my ($source, $dest) = @_;
|
||||||
|
|
||||||
|
foreach my $k (keys %$source) {
|
||||||
|
next if $k eq 'snapshots';
|
||||||
|
next if $k eq 'lock';
|
||||||
|
next if $k eq 'digest';
|
||||||
|
next if $k =~ m/^unused\d+$/;
|
||||||
|
|
||||||
|
$dest->{$k} = $source->{$k};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
my $snapshot_apply_config = sub {
|
||||||
|
my ($conf, $snap) = @_;
|
||||||
|
|
||||||
|
# copy snapshot list
|
||||||
|
my $newconf = {
|
||||||
|
snapshots => $conf->{snapshots},
|
||||||
|
};
|
||||||
|
|
||||||
|
# keep list of unused disks
|
||||||
|
foreach my $k (keys %$conf) {
|
||||||
|
next if $k !~ m/^unused\d+$/;
|
||||||
|
$newconf->{$k} = $conf->{$k};
|
||||||
|
}
|
||||||
|
|
||||||
|
&$snapshot_copy_config($snap, $newconf);
|
||||||
|
|
||||||
|
return $newconf;
|
||||||
|
};
|
||||||
|
|
||||||
my $snapshot_prepare = sub {
|
my $snapshot_prepare = sub {
|
||||||
my ($vmid, $snapname) = @_;
|
my ($vmid, $snapname) = @_;
|
||||||
|
|
||||||
@ -3580,13 +3612,7 @@ my $snapshot_prepare = sub {
|
|||||||
snapstate => "prepare",
|
snapstate => "prepare",
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach my $k (keys %$conf) {
|
&$snapshot_copy_config($conf, $snap);
|
||||||
next if $k eq 'snapshots';
|
|
||||||
next if $k eq 'lock';
|
|
||||||
next if $k eq 'digest';
|
|
||||||
|
|
||||||
$snap->{$k} = $conf->{$k};
|
|
||||||
}
|
|
||||||
|
|
||||||
update_config_nolock($vmid, $conf, 1);
|
update_config_nolock($vmid, $conf, 1);
|
||||||
};
|
};
|
||||||
@ -3615,17 +3641,7 @@ my $snapshot_commit = sub {
|
|||||||
|
|
||||||
delete $snap->{snapstate};
|
delete $snap->{snapstate};
|
||||||
|
|
||||||
# copy snapshot config to current config
|
my $newconf = &$snapshot_apply_config($conf, $snap);
|
||||||
my $newconf = {
|
|
||||||
snapshots => $conf->{snapshots},
|
|
||||||
};
|
|
||||||
foreach my $k (keys %$snap) {
|
|
||||||
next if $k eq 'snapshots';
|
|
||||||
next if $k eq 'lock';
|
|
||||||
next if $k eq 'digest';
|
|
||||||
|
|
||||||
$newconf->{$k} = $snap->{$k};
|
|
||||||
}
|
|
||||||
|
|
||||||
update_config_nolock($vmid, $newconf, 1);
|
update_config_nolock($vmid, $newconf, 1);
|
||||||
};
|
};
|
||||||
@ -3665,17 +3681,8 @@ sub snapshot_rollback {
|
|||||||
|
|
||||||
if (!$prepare) {
|
if (!$prepare) {
|
||||||
# copy snapshot config to current config
|
# copy snapshot config to current config
|
||||||
my $newconf = {
|
$conf = &$snapshot_apply_config($conf, $snap);
|
||||||
snapshots => $conf->{snapshots},
|
$conf->{parent} = $snapname;
|
||||||
};
|
|
||||||
foreach my $k (keys %$snap) {
|
|
||||||
next if $k eq 'snapshots';
|
|
||||||
next if $k eq 'lock';
|
|
||||||
next if $k eq 'digest';
|
|
||||||
|
|
||||||
$newconf->{$k} = $snap->{$k};
|
|
||||||
$newconf->{parent} = $snapname;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update_config_nolock($vmid, $conf, 1);
|
update_config_nolock($vmid, $conf, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user