[PATCH] Look for i686 target for i386 Windows guest
We detect a Windows guest with 32 bit userspace as i386. Ensure we look for a i686 kvm target in this case. Fixes RHBZ#605593 --- lib/Sys/VirtV2V/Target/LibVirt.pm | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm index cb9961d..199ca9e 100644 --- a/lib/Sys/VirtV2V/Target/LibVirt.pm +++ b/lib/Sys/VirtV2V/Target/LibVirt.pm @@ -317,6 +317,9 @@ sub _configure_capabilities my $arch = $guestcaps->{arch}; + # i386 userspace means i686 guest + $arch = 'i686' if ($arch eq 'i386'); + (my $guestcap) = $caps->findnodes ("/capabilities/guest[arch[\@name='$arch']/domain/\@type='kvm']"); -- 1.7.1
On Fri, Jun 18, 2010 at 01:37:52PM +0100, Matthew Booth wrote:
We detect a Windows guest with 32 bit userspace as i386. Ensure we look for a i686 kvm target in this case.
Fixes RHBZ#605593 --- lib/Sys/VirtV2V/Target/LibVirt.pm | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm index cb9961d..199ca9e 100644 --- a/lib/Sys/VirtV2V/Target/LibVirt.pm +++ b/lib/Sys/VirtV2V/Target/LibVirt.pm @@ -317,6 +317,9 @@ sub _configure_capabilities
my $arch = $guestcaps->{arch};
+ # i386 userspace means i686 guest + $arch = 'i686' if ($arch eq 'i386'); + (my $guestcap) = $caps->findnodes ("/capabilities/guest[arch[\@name='$arch']/domain/\@type='kvm']");
ACK. Maybe better to do: $arch =~ s/^i[345]86$/i686/; Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
This fix wasn't actually complete, as the wrong architecture is still used in the domain XML, which will result in failure to create a libvirt domain. This change fixes it at source.
We detect a Windows guest with 32 bit userspace as i386. Ensure we look for a i686 kvm target in this case. At the same time, ensure that i[45]86 Linux userspace will also use i686. Fixes RHBZ#605593 --- lib/Sys/VirtV2V/Converter/Linux.pm | 4 ++-- lib/Sys/VirtV2V/Converter/Windows.pm | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/Sys/VirtV2V/Converter/Linux.pm b/lib/Sys/VirtV2V/Converter/Linux.pm index ecee5bf..adfd2e5 100644 --- a/lib/Sys/VirtV2V/Converter/Linux.pm +++ b/lib/Sys/VirtV2V/Converter/Linux.pm @@ -334,8 +334,8 @@ sub _get_os_arch # Default to i686 if we didn't find an architecture return 'i686' if(!defined($arch)); - # i386 should really be i686 - return 'i686' if($arch eq 'i386'); + # We want an i686 guest for i[345]86 + return 'i686' if($arch =~ /^i[345]86$/); return $arch; } diff --git a/lib/Sys/VirtV2V/Converter/Windows.pm b/lib/Sys/VirtV2V/Converter/Windows.pm index e55d0f3..7f4604d 100644 --- a/lib/Sys/VirtV2V/Converter/Windows.pm +++ b/lib/Sys/VirtV2V/Converter/Windows.pm @@ -135,6 +135,9 @@ sub convert $guestcaps{arch} = $desc->{arch}; $guestcaps{acpi} = 1; # XXX + # We want an i686 guest for i[345]86 + $guestcaps{arch} =~ s/^i[345]86/i686/; + return \%guestcaps; } -- 1.7.1
On Fri, Jun 18, 2010 at 04:01:05PM +0100, Matthew Booth wrote:
We detect a Windows guest with 32 bit userspace as i386. Ensure we look for a i686 kvm target in this case.
At the same time, ensure that i[45]86 Linux userspace will also use i686.
Fixes RHBZ#605593 --- lib/Sys/VirtV2V/Converter/Linux.pm | 4 ++-- lib/Sys/VirtV2V/Converter/Windows.pm | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/Sys/VirtV2V/Converter/Linux.pm b/lib/Sys/VirtV2V/Converter/Linux.pm index ecee5bf..adfd2e5 100644 --- a/lib/Sys/VirtV2V/Converter/Linux.pm +++ b/lib/Sys/VirtV2V/Converter/Linux.pm @@ -334,8 +334,8 @@ sub _get_os_arch # Default to i686 if we didn't find an architecture return 'i686' if(!defined($arch));
- # i386 should really be i686 - return 'i686' if($arch eq 'i386'); + # We want an i686 guest for i[345]86 + return 'i686' if($arch =~ /^i[345]86$/);
return $arch; } diff --git a/lib/Sys/VirtV2V/Converter/Windows.pm b/lib/Sys/VirtV2V/Converter/Windows.pm index e55d0f3..7f4604d 100644 --- a/lib/Sys/VirtV2V/Converter/Windows.pm +++ b/lib/Sys/VirtV2V/Converter/Windows.pm @@ -135,6 +135,9 @@ sub convert $guestcaps{arch} = $desc->{arch}; $guestcaps{acpi} = 1; # XXX
+ # We want an i686 guest for i[345]86 + $guestcaps{arch} =~ s/^i[345]86/i686/; + return \%guestcaps; }
-- 1.7.1
ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://et.redhat.com/~rjones/virt-top
participants (2)
-
Matthew Booth -
Richard W.M. Jones