[pve-devel] [PATCH] use qom-get to check if pxe file are used

Alexandre Derumier aderumier at odiso.com
Thu Nov 5 19:30:45 CET 2015


fix qemu 2.4 pxe -> qemu 2.4 efi

Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/QemuMigrate.pm | 11 +++++++++++
 PVE/QemuServer.pm  | 22 +++++++++++++++-------
 2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index a1ee10a..1a7c777 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -142,6 +142,17 @@ sub prepare {
 	die "cant migrate running VM without --online\n" if !$online;
 	$running = $pid;
 	$self->{forcemachine} = PVE::QemuServer::get_current_qemu_machine($vmid);
+
+	foreach my $opt (keys %$conf) {
+	    next if $opt !~ m/^net(\d+)$/;
+	    my $net = PVE::QemuServer::parse_net($conf->{$opt});
+	    next if !$net;
+	    my $romfile = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 'qom-get', path => $opt, property => 'romfile');
+	    $self->{forcemachine} .= '.pxe';
+	    last;
+
+	}
+
     }
 
     if (my $loc_res = PVE::QemuServer::check_local_resources($conf, 1)) {
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 72bd1d0..6b96edb 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -373,7 +373,7 @@ EODESCR
     machine => {
 	description => "Specific the Qemu machine type.",
 	type => 'string',
-	pattern => '(pc|pc(-i440fx)?-\d+\.\d+|q35|pc-q35-\d+\.\d+)',
+	pattern => '(pc|pc(-i440fx)?-\d+\.\d+(\.pxe)?|q35|pc-q35-\d+\.\d+(\.pxe)?)',
 	maxLength => 40,
 	optional => 1,
     },
@@ -2657,12 +2657,20 @@ sub config_to_command {
 	push @$cmd, '-p', "CPUQuota=$cpulimit\%";
     }
 
-    # Note: kvm version < 2.4 use non-efi pxe files, and have problems when we
-    # load new efi bios files on migration. So this hack is required to allow
-    # live migration from qemu-2.2 to qemu-2.4, which is sometimes used when
-    # updrading from proxmox-ve-3.X to proxmox-ve 4.0
-    my $use_old_bios_files = !qemu_machine_feature_enabled ($machine_type, $kvmver, 2, 4);
-    
+
+    my $use_old_bios_files = undef;
+
+    if ($machine_type && $machine_type =~ m/^(\S+)\.pxe$/){
+	$machine_type = $1;
+	$use_old_bios_files = 1;
+    } else {
+	# Note: kvm version < 2.4 use non-efi pxe files, and have problems when we
+	# load new efi bios files on migration. So this hack is required to allow
+	# live migration from qemu-2.2 to qemu-2.4, which is sometimes used when
+	# updrading from proxmox-ve-3.X to proxmox-ve 4.0
+    	$use_old_bios_files = !qemu_machine_feature_enabled ($machine_type, $kvmver, 2, 4);
+    }
+
     push @$cmd, '/usr/bin/kvm';
 
     push @$cmd, '-id', $vmid;
-- 
2.1.4



More information about the pve-devel mailing list