sub fork_tunnel {
my ($self, $nodeip, $lport, $rport) = @_;
- my @localtunnelinfo = (defined $lport) ? qw(-L $lport:localhost:$rport) : ();
+ my @localtunnelinfo = $lport ? ('-L' , "$lport:localhost:$rport" ) : ();
- my $cmd = [@{$self->{rem_ssh}}, @localtunnelinfo,
- 'qm', 'mtunnel' ];
+ my $cmd = [@{$self->{rem_ssh}}, @localtunnelinfo, 'qm', 'mtunnel' ];
my $tunnel = $self->fork_command_pipe($cmd);
$self->log('info', "migrate_set_downtime error: $@") if $@;
}
- my $capabilities = {};
- $capabilities->{capability} = "xbzrle";
- $capabilities->{state} = JSON::false;
-
eval {
- PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate-set-capabilities", capabilities => [$capabilities]);
+ PVE::QemuServer::set_migration_caps($vmid);
};
+ warn $@ if $@;
#set cachesize 10% of the total memory
my $cachesize = int($conf->{memory}*1048576/10);
my (undef, $proxyticket) = PVE::AccessControl::assemble_spice_ticket($authuser, $vmid, $self->{node});
my $filename = "/etc/pve/nodes/$self->{node}/pve-ssl.pem";
- my $subject = PVE::QemuServer::read_x509_subject_spice($filename);
+ my $subject = PVE::AccessControl::read_x509_subject_spice($filename);
$self->log('info', "spice client_migrate_info");
$self->log('info', "migration status: $stat->{status} (transferred ${trans}, " .
"remaining ${rem}), total ${total})");
- #$self->log('info', "migration xbzrle cachesize: ${xbzrlecachesize} transferred ${xbzrlebytes} pages ${xbzrlepages} cachemiss ${xbzrlecachemiss} overflow ${xbzrleoverflow}");
+ if (${xbzrlecachesize}) {
+ $self->log('info', "migration xbzrle cachesize: ${xbzrlecachesize} transferred ${xbzrlebytes} pages ${xbzrlepages} cachemiss ${xbzrlecachemiss} overflow ${xbzrleoverflow}");
+ }
+
if (($lastrem && $rem > $lastrem ) || ($rem == 0)) {
$downtimecounter++;
}
}
}
- my $timer = 0;
- if (PVE::QemuServer::vga_conf_has_spice($conf->{vga})) {
- $self->log('info', "Waiting for spice server migration");
- while (1) {
- my $res = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 'query-spice');
- last if int($res->{'migrated'}) == 1;
- last if $timer > 50;
- $timer ++;
- usleep(200000);
- }
- }
+ eval {
+
+ my $timer = 0;
+ if (PVE::QemuServer::vga_conf_has_spice($conf->{vga}) && $self->{running}) {
+ $self->log('info', "Waiting for spice server migration");
+ while (1) {
+ my $res = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 'query-spice');
+ last if int($res->{'migrated'}) == 1;
+ last if $timer > 50;
+ $timer ++;
+ usleep(200000);
+ }
+ }
+ };
# always stop local VM
eval { PVE::QemuServer::vm_stop($self->{storecfg}, $vmid, 1, 1); };