[pve-devel] [PATCH v2 qemu 2/2] migrate: log which local resource causes error
Tim Marx
t.marx at proxmox.com
Fri May 3 14:22:39 CEST 2019
Signed-off-by: Tim Marx <t.marx at proxmox.com>
---
v2:
* changed return value to array ref
* made log output more real sentence
PVE/QemuMigrate.pm | 6 +++---
PVE/QemuServer.pm | 14 +++++++-------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index e915a9a..bc83816 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -218,10 +218,10 @@ sub prepare {
$self->{forcemachine} = PVE::QemuServer::qemu_machine_pxe($vmid, $conf);
}
-
- if (my $loc_res = PVE::QemuServer::check_local_resources($conf, 1)) {
+ my $loc_res = PVE::QemuServer::check_local_resources($conf, 1);
+ if (scalar @$loc_res) {
if ($self->{running} || !$self->{opts}->{force}) {
- die "can't migrate VM which uses local devices\n";
+ die "can't migrate VM which uses local devices: " . join(", ", @$loc_res) . "\n";
} else {
$self->log('info', "migrating VM which uses local devices");
}
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index ee4fbd3..9d560ec 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -2846,23 +2846,23 @@ sub config_list {
sub check_local_resources {
my ($conf, $noerr) = @_;
- my $loc_res = 0;
+ my @loc_res = ();
- $loc_res = 1 if $conf->{hostusb}; # old syntax
- $loc_res = 1 if $conf->{hostpci}; # old syntax
+ push @loc_res, "hostusb" if $conf->{hostusb}; # old syntax
+ push @loc_res, "hostpci" if $conf->{hostpci}; # old syntax
- $loc_res = 1 if $conf->{ivshmem};
+ push @loc_res, "ivshmem" if $conf->{ivshmem};
foreach my $k (keys %$conf) {
next if $k =~ m/^usb/ && ($conf->{$k} eq 'spice');
# sockets are safe: they will recreated be on the target side post-migrate
next if $k =~ m/^serial/ && ($conf->{$k} eq 'socket');
- $loc_res = 1 if $k =~ m/^(usb|hostpci|serial|parallel)\d+$/;
+ push @loc_res, $k if $k =~ m/^(usb|hostpci|serial|parallel)\d+$/;
}
- die "VM uses local resources\n" if $loc_res && !$noerr;
+ die "VM uses local resources\n" if scalar @loc_res && !$noerr;
- return $loc_res;
+ return \@loc_res;
}
# check if used storages are available on all nodes (use by migrate)
--
2.11.0
More information about the pve-devel
mailing list