[libvirt] Libvirt error in Openstack Tempest attaching disk on arm64 system

I am running Openstack Tempest on an arm64 platform and am seeing some test failures related to attaching volumes to an instance. This is an example of the disk XML generated by one of the tests: <disk type="block" device="disk"><driver name="qemu" type="raw" cache="none"/<source dev="/dev/disk/by-path/ip-10.7.1.2:3260-iscsi-iqn.2010-10.org.openstack:volume-5a204339-80cb-4d06-aecf-2a8a2c970b0e-lun-1"/><target bus="virtio" dev="vdb"/><serial>5a204339-80cb-4d06-aecf-2a8a2c970b0e</serial></disk> The test is failing with the error "XML error: No PCI buses available". I am trying to find the relevent source locations for this functionality in either in the nova libvirt driver or in the libvirt source itself. I am not sure why I am getting an error about no PCI buses when the bus specified in the XML is "virtio". I would appreciate any pointers / help. Thank you, Clark L

On Wed, Jul 22, 2015 at 02:53:31PM -0500, Clark Laughlin wrote:
I am running Openstack Tempest on an arm64 platform and am seeing some test failures related to attaching volumes to an instance. This is an example of the disk XML generated by one of the tests:
<disk type="block" device="disk"><driver name="qemu" type="raw" cache="none"/<source dev="/dev/disk/by-path/ip-10.7.1.2:3260-iscsi-iqn.2010-10.org.openstack:volume-5a204339-80cb-4d06-aecf-2a8a2c970b0e-lun-1"/><target bus="virtio" dev="vdb"/><serial>5a204339-80cb-4d06-aecf-2a8a2c970b0e</serial></disk>
The test is failing with the error "XML error: No PCI buses available". I am trying to find the relevent source locations for this functionality in either in the nova libvirt driver or in the libvirt source itself. I am not sure why I am getting an error about no PCI buses when the bus specified in the XML is "virtio".
I would appreciate any pointers / help.
virtio is just a guest/host device communication protocol that can be run over multiple different transport. On x86 virtio has always used PCI, but on s390 it uses either s390 or ccw bus, and on arm7/aarch64 it uses mmio. I'm not sure that the mmio bus supports hotplug, which could be why you see the error in question. Very latest upstream QEMU does now support PCI with aarch64 so in the near future it should have parity of functionality with x86 Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

This series: https://www.redhat.com/archives/libvir-list/2015-July/msg00634.html should fix this problem. It happens because libvirt holds an internal model of PCI bus, against which everything is validated. And libvirt does not know that ARM "virt" machine in qemu can have PCI. I am waiting for the review, i have posted several versions, but got no single response during ~3 weeks. Kind regards, Pavel Fedin Expert Engineer Samsung Electronics Research center Russia

I was just recently told I should try using virtio-scsi on arm64 -- that QEMU 2.4.0 has everything needed for block device hotplug on arm64 using virtio-scsi. I see that nova appears to have support as of Feb 2014 ( https://review.openstack.org/#/c/70263/). I am currently using the distro-provided libvirt on trusty and vivid. Would this be new enough to have what I need? Thank you, Clark On Wed, Jul 22, 2015 at 3:58 PM, Daniel P. Berrange <berrange@redhat.com> wrote:
On Wed, Jul 22, 2015 at 02:53:31PM -0500, Clark Laughlin wrote:
I am running Openstack Tempest on an arm64 platform and am seeing some test failures related to attaching volumes to an instance. This is an example of the disk XML generated by one of the tests:
<disk type="block" device="disk"><driver name="qemu" type="raw" cache="none"/<source
dev="/dev/disk/by-path/ip-10.7.1.2:3260-iscsi-iqn.2010-10.org.openstack:volume-5a204339-80cb-4d06-aecf-2a8a2c970b0e-lun-1"/><target
bus="virtio" dev="vdb"/><serial>5a204339-80cb-4d06-aecf-2a8a2c970b0e</serial></disk>
The test is failing with the error "XML error: No PCI buses available". I am trying to find the relevent source locations for this functionality in either in the nova libvirt driver or in the libvirt source itself. I am not sure why I am getting an error about no PCI buses when the bus specified in the XML is "virtio".
I would appreciate any pointers / help.
virtio is just a guest/host device communication protocol that can be run over multiple different transport. On x86 virtio has always used PCI, but on s390 it uses either s390 or ccw bus, and on arm7/aarch64 it uses mmio. I'm not sure that the mmio bus supports hotplug, which could be why you see the error in question. Very latest upstream QEMU does now support PCI with aarch64 so in the near future it should have parity of functionality with x86
Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
participants (3)
-
Clark Laughlin
-
Daniel P. Berrange
-
Pavel Fedin