diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index f9098733..b5ec45c5 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -595,7 +595,7 @@ sub phase2 { # Note: We try to keep $spice_ticket secret (do not pass via command line parameter) # instead we pipe it through STDIN - PVE::Tools::run_command($cmd, input => $spice_ticket, outfunc => sub { + my $exitcode = PVE::Tools::run_command($cmd, input => $spice_ticket, outfunc => sub { my $line = shift; if ($line =~ m/^migration listens on tcp:(localhost|[\d\.]+|\[[\d\.:a-fA-F]+\]):(\d+)$/) { @@ -629,7 +629,9 @@ sub phase2 { }, errfunc => sub { my $line = shift; $self->log('info', $line); - }); + }, noerr => 1); + + die "remote command failed with exit code $exitcode\n" if $exitcode; die "unable to detect remote migration address\n" if !$raddr; diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index c8e2b667..45fee3ca 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -5405,7 +5405,11 @@ sub vm_start { : $defaults->{cpuunits}; my $start_timeout = ($conf->{hugepages} || $is_suspended) ? 300 : 30; - my %run_params = (timeout => $statefile ? undef : $start_timeout, umask => 0077); + my %run_params = ( + timeout => $statefile ? undef : $start_timeout, + umask => 0077, + noerr => 1, + ); my %properties = ( Slice => 'qemu.slice', @@ -5421,7 +5425,9 @@ sub vm_start { my $run_qemu = sub { PVE::Tools::run_fork sub { PVE::Systemd::enter_systemd_scope($vmid, "Proxmox VE VM $vmid", %properties); - run_command($cmd, %run_params); + + my $exitcode = run_command($cmd, %run_params); + die "QEMU exited with code $exitcode\n" if $exitcode; }; };