mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-14 14:05:45 +00:00
migrate: keep VM paused after migration if it was before
Also cannot issue a guest agent command in that case. Reported in the community forum: https://forum.proxmox.com/threads/106618 Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
d18b5d90ee
commit
a183576e30
@ -158,6 +158,8 @@ sub prepare {
|
|||||||
$self->{forcecpu} = PVE::QemuServer::CPUConfig::get_cpu_from_running_vm($pid);
|
$self->{forcecpu} = PVE::QemuServer::CPUConfig::get_cpu_from_running_vm($pid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$self->{vm_was_paused} = 1 if PVE::QemuServer::vm_is_paused($vmid);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $loc_res = PVE::QemuServer::check_local_resources($conf, 1);
|
my $loc_res = PVE::QemuServer::check_local_resources($conf, 1);
|
||||||
@ -1146,31 +1148,37 @@ sub phase3_cleanup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# config moved and nbd server stopped - now we can resume vm on target
|
if (!$self->{vm_was_paused}) {
|
||||||
if ($tunnel && $tunnel->{version} && $tunnel->{version} >= 1) {
|
# config moved and nbd server stopped - now we can resume vm on target
|
||||||
eval {
|
if ($tunnel && $tunnel->{version} && $tunnel->{version} >= 1) {
|
||||||
PVE::Tunnel::write_tunnel($tunnel, 30, "resume $vmid");
|
eval {
|
||||||
};
|
PVE::Tunnel::write_tunnel($tunnel, 30, "resume $vmid");
|
||||||
if (my $err = $@) {
|
};
|
||||||
$self->log('err', $err);
|
if (my $err = $@) {
|
||||||
$self->{errors} = 1;
|
$self->log('err', $err);
|
||||||
|
$self->{errors} = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
my $cmd = [@{$self->{rem_ssh}}, 'qm', 'resume', $vmid, '--skiplock', '--nocheck'];
|
||||||
|
my $logf = sub {
|
||||||
|
my $line = shift;
|
||||||
|
$self->log('err', $line);
|
||||||
|
};
|
||||||
|
eval { PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => $logf); };
|
||||||
|
if (my $err = $@) {
|
||||||
|
$self->log('err', $err);
|
||||||
|
$self->{errors} = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
my $cmd = [@{$self->{rem_ssh}}, 'qm', 'resume', $vmid, '--skiplock', '--nocheck'];
|
|
||||||
my $logf = sub {
|
|
||||||
my $line = shift;
|
|
||||||
$self->log('err', $line);
|
|
||||||
};
|
|
||||||
eval { PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => $logf); };
|
|
||||||
if (my $err = $@) {
|
|
||||||
$self->log('err', $err);
|
|
||||||
$self->{errors} = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($self->{storage_migration} && PVE::QemuServer::parse_guest_agent($conf)->{fstrim_cloned_disks} && $self->{running}) {
|
if (
|
||||||
my $cmd = [@{$self->{rem_ssh}}, 'qm', 'guest', 'cmd', $vmid, 'fstrim'];
|
$self->{storage_migration}
|
||||||
eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => sub {}) };
|
&& PVE::QemuServer::parse_guest_agent($conf)->{fstrim_cloned_disks}
|
||||||
|
&& $self->{running}
|
||||||
|
) {
|
||||||
|
my $cmd = [@{$self->{rem_ssh}}, 'qm', 'guest', 'cmd', $vmid, 'fstrim'];
|
||||||
|
eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => sub {}) };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user