From 000acacacc77cec1ff221f41d7c44ed8b7bc2ead Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Tue, 2 Jul 2019 11:56:41 +0200 Subject: [PATCH] pve5to6: followup: improve coding style and outputs a bit Signed-off-by: Thomas Lamprecht --- PVE/CLI/pve5to6.pm | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/PVE/CLI/pve5to6.pm b/PVE/CLI/pve5to6.pm index 2d4fd82e..328ecab1 100644 --- a/PVE/CLI/pve5to6.pm +++ b/PVE/CLI/pve5to6.pm @@ -160,14 +160,17 @@ sub get_vms_with_vmx { flag => [], }; my $vmlist = PVE::QemuServer::vzlist(); + foreach my $vmid ( sort { $a <=> $b } keys %$vmlist ) { my $pid = $vmlist->{$vmid}->{pid}; next if !$pid; # skip not running vms + my $cmdline = eval { PVE::Tools::file_get_contents("/proc/$pid/cmdline") }; if ($cmdline) { my @args = split(/\0/, $cmdline); for (my $i = 0; $i < scalar(@args); $i++) { next if !$args[$i] || $args[$i] !~ m/^-?-cpu$/; + my $cpuarg = $args[$i+1]; if ($cpuarg =~ m/^(host|max)/) { push @{$res->{cpu}}, $vmid; @@ -177,11 +180,15 @@ sub get_vms_with_vmx { } } } - my $count = scalar(@{$res->{cpu}}) + scalar(@{$res->{flag}}); - return ($count, $res); + + $res = undef if (scalar(@{$res->{cpu}}) + scalar(@{$res->{flag}})) <= 0; + + return $res; } sub check_kvm_nested { + log_info("Checking KVM nesting support, which breaks live migration for VMs using it.."); + my $module_sysdir = "/sys/module"; if (-e "$module_sysdir/kvm_amd") { $module_sysdir .= "/kvm_amd/parameters"; @@ -195,21 +202,17 @@ sub check_kvm_nested { if (-f "$module_sysdir/nested") { my $val = eval { PVE::Tools::file_read_firstline("$module_sysdir/nested") }; if ($val && $val =~ m/Y|1/) { - my ($count, $list) = get_vms_with_vmx(); - if (!$count) { - log_skip("KVM nested parameter set.\nVMs with cputype host/max " . - "or vmx/svm flag will not be able to live migrate to PVE 6."); + my $list = get_vms_with_vmx(); + if (!defined($list)) { + log_pass("KVM nested parameter set, but currently no VM with a 'vmx' or 'svm' flag is running."); } else { - my $warnmsg = "KVM nested parameter set.\n" . - "It will not be possible to live migrate following VMs to PVE6:\n"; + my $warnmsg = "KVM nested enabled. It will not be possible to live migrate the following running VMs to PVE 6:\n"; if (@{$list->{cpu}}) { - $warnmsg .= "VMs with cputype host/max: " . join(',', @{$list->{cpu}}) . "\n"; + $warnmsg .= " VMID(s) with cputype 'host' or 'max': " . join(',', @{$list->{cpu}}) . "\n"; } - if (@{$list->{flag}}) { - $warnmsg .= "VMs with cpu flag vmx/svm: " . join(',', @{$list->{flag}}) . "\n"; + $warnmsg .= " VMID(s) with enforced cpu flag 'vmx' or 'svm': " . join(',', @{$list->{flag}}) . "\n"; } - log_warn($warnmsg); } } else {