[PATCH 0/2] Remove troublesome devices when outputting to libvirt
These 2 patches remove devices which can prevent a guest from starting after conversion if they aren't supported by the target. This solution isn't ideal. We would preferrably query the target for supported models and update if necessary, however there's no API for this yet. Matthew Booth (2): Remove converted SCSI controllers Remove sound cards when outputting to libvirt lib/Sys/VirtV2V/Target/LibVirt.pm | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) -- 1.7.2.3
We never use SCSI after conversion as we always use either VirtIO or IDE. As an unsupported SCSI controller can prevent a converted guest from starting, it's safer to just remove SCSI controllers. Fixes RHBZ#637775 --- lib/Sys/VirtV2V/Target/LibVirt.pm | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm index 279e93d..95ffad4 100644 --- a/lib/Sys/VirtV2V/Target/LibVirt.pm +++ b/lib/Sys/VirtV2V/Target/LibVirt.pm @@ -330,11 +330,27 @@ sub create_guest my $vmm = $self->{vmm}; + _unconfigure_incompatible_devices($dom); _configure_capabilities($vmm, $dom, $guestcaps); $vmm->define_domain($dom->toString()); } +sub _unconfigure_incompatible_devices +{ + my ($dom) = @_; + + foreach my $path ( + # We have replaced the SCSI controller with either VirtIO or IDE. + # Additionally, attempting to start a guest converted from ESX, which + # has an lsilogic SCSI controller, will fail on RHEL 5. + $dom->findnodes("/domain/devices/controller[\@type='scsi']") + ) + { + $path->getParentNode()->removeChild($path); + } +} + # Configure guest according to target hypervisor's capabilities sub _configure_capabilities { -- 1.7.2.3
As we can't currently detect what sound card models are supported by the target hypervisor, simply remove them. Works round RHBZ#589567 --- lib/Sys/VirtV2V/Target/LibVirt.pm | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm index 95ffad4..029e4e2 100644 --- a/lib/Sys/VirtV2V/Target/LibVirt.pm +++ b/lib/Sys/VirtV2V/Target/LibVirt.pm @@ -344,7 +344,13 @@ sub _unconfigure_incompatible_devices # We have replaced the SCSI controller with either VirtIO or IDE. # Additionally, attempting to start a guest converted from ESX, which # has an lsilogic SCSI controller, will fail on RHEL 5. - $dom->findnodes("/domain/devices/controller[\@type='scsi']") + $dom->findnodes("/domain/devices/controller[\@type='scsi']"), + + # XXX: We have no current way of detecting which sound card models are + # supported by the target hypervisor. As an unsupported sound card model + # can prevent the guest from starting, we simply remove sound cards for + # the moment. + $dom->findnodes("/domain/devices/sound") ) { $path->getParentNode()->removeChild($path); -- 1.7.2.3
On Mon, Sep 27, 2010 at 03:03:37PM +0100, Matthew Booth wrote:
As we can't currently detect what sound card models are supported by the target hypervisor, simply remove them.
Works round RHBZ#589567 --- lib/Sys/VirtV2V/Target/LibVirt.pm | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm index 95ffad4..029e4e2 100644 --- a/lib/Sys/VirtV2V/Target/LibVirt.pm +++ b/lib/Sys/VirtV2V/Target/LibVirt.pm @@ -344,7 +344,13 @@ sub _unconfigure_incompatible_devices # We have replaced the SCSI controller with either VirtIO or IDE. # Additionally, attempting to start a guest converted from ESX, which # has an lsilogic SCSI controller, will fail on RHEL 5. - $dom->findnodes("/domain/devices/controller[\@type='scsi']") + $dom->findnodes("/domain/devices/controller[\@type='scsi']"), + + # XXX: We have no current way of detecting which sound card models are + # supported by the target hypervisor. As an unsupported sound card model + # can prevent the guest from starting, we simply remove sound cards for + # the moment. + $dom->findnodes("/domain/devices/sound") ) { $path->getParentNode()->removeChild($path);
ACK to both of these. Seems simple for now. It should be possible in future to detect which sound cards are supported (is it not in libvirt capabilities?) Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://et.redhat.com/~rjones/virt-df/
On 27/09/10 17:12, Richard W.M. Jones wrote:
On Mon, Sep 27, 2010 at 03:03:37PM +0100, Matthew Booth wrote:
As we can't currently detect what sound card models are supported by the target hypervisor, simply remove them.
Works round RHBZ#589567 --- lib/Sys/VirtV2V/Target/LibVirt.pm | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm index 95ffad4..029e4e2 100644 --- a/lib/Sys/VirtV2V/Target/LibVirt.pm +++ b/lib/Sys/VirtV2V/Target/LibVirt.pm @@ -344,7 +344,13 @@ sub _unconfigure_incompatible_devices # We have replaced the SCSI controller with either VirtIO or IDE. # Additionally, attempting to start a guest converted from ESX, which # has an lsilogic SCSI controller, will fail on RHEL 5. - $dom->findnodes("/domain/devices/controller[\@type='scsi']") + $dom->findnodes("/domain/devices/controller[\@type='scsi']"), + + # XXX: We have no current way of detecting which sound card models are + # supported by the target hypervisor. As an unsupported sound card model + # can prevent the guest from starting, we simply remove sound cards for + # the moment. + $dom->findnodes("/domain/devices/sound") ) { $path->getParentNode()->removeChild($path);
ACK to both of these. Seems simple for now. It should be possible in future to detect which sound cards are supported (is it not in libvirt capabilities?)
Unfortunately not. I understand it's under discussion, though. Matt -- Matthew Booth, RHCA, RHCSS Red Hat Engineering, Virtualisation Team GPG ID: D33C3490 GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490
participants (2)
-
Matthew Booth -
Richard W.M. Jones