Bug#846173: libvirt-daemon: Fails to locate existing usb device

2017-09-22 Thread David Gilmour
Timo, thanks.  Also, Ron, I wanted to add my belated thanks to you for taking 
this up and digging in so carefully, to the root cause.

Cheers all,

David

-Original Message-
From: Timo Lindfors [mailto:timo.lindf...@iki.fi] 
Sent: Thursday, September 21, 2017 11:44 AM
To: 846...@bugs.debian.org
Cc: David Gilmour ; r...@debian.org
Subject: Re: Bug#846173: libvirt-daemon: Fails to locate existing usb device

Hi,

thanks for the detailed investigation. I hit this bug when I upgraded my home 
server. I have USB devices assigned to VMs based on the USB topology (hub and 
port number). Since I really need my USB printer to work I came up with the 
following very hacky solution. I hope I can migrate to something better in the 
future :)

(The following still has the bug that if I shutdown my server libvirt will save 
my VMs to disk along with information on the attached USB devices which 
probably is completely bogus when the guests are later restored. I have not 
found a hook that'd get run when the VM is about to be saved to disk but is 
still running.)

 /etc/udev/rules.d/90-usb-libvirt-hotplug.rules

# 433 MHz transmitter for home automation 
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.1",RUN+="/root/udev-usb-hotplug
 radio.home"
# USB printer
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.2",RUN+="/root/udev-usb-hotplug
 print.home"
# DVB capture cards
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.4",RUN+="/root/udev-usb-hotplug
 tv.home"
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.3",RUN+="/root/udev-usb-hotplug
 tv.home"
# 4G modem
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-4",RUN+="/root/udev-usb-hotplug
 backupgateway"

 /root/udev-usb-hotplug

#!/bin/bash

domain="$1"

if [ "$ACTION" = "remove" ]; then
 /root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh "$domain"
else
 # Delay "add" events to workaround 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846173
 /usr/bin/systemd-run --on-active=5 --timer-property=AccuracySec=100ms env 
SUBSYSTEM="$SUBSYSTEM" DEVTYPE="$DEVTYPE" ACTION="$ACTION" BUSNUM="$BUSNUM" 
DEVNUM="$DEVNUM" /root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh "$domain"
fi


 /root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh

See https://github.com/olavmrk/usb-libvirt-hotplug

 /etc/libvirt/hooks/qemu


#!/bin/bash

add_usb_device() {
 sysdir="$1"
 vm="$2"
 if [ -e "$sysdir" ]; then
bus="$(grep BUSNUM= $sysdir/uevent | cut -d = -f2)"
dev="$(grep DEVNUM= $sysdir/uevent | cut -d = -f2)"
# hack: avoid deadlocks that happen if you call libvirt API from a 
libvirt hook..
setsid nohup env ACTION=add SUBSYSTEM=usb DEVTYPE=usb_device 
BUSNUM=$bus DEVNUM=$dev /root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh "$vm" 
< /dev/null > /dev/null 2>&1 &

 fi
}

if [ "$2" = "started" -o "$2" = "restore" ]; then
 case "$1" in
radio.home)
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.1' radio.home
;;
print.home)
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.2' print.home
;;
tv.home)
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.3' tv.home
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.4' tv.home
;;
backupgateway)
add_usb_device '/sys/devices/pci:00/:00:14.0/usb1/1-4' 
backupgateway
;;
 esac
fi

cat

exit 0


-Timo



Bug#846173: libvirt-daemon: Fails to locate existing usb device

2017-09-21 Thread Timo Lindfors

Hi,

thanks for the detailed investigation. I hit this bug when I upgraded my 
home server. I have USB devices assigned to VMs based on the USB topology 
(hub and port number). Since I really need my USB printer to work I came up
with the following very hacky solution. I hope I can migrate to something 
better in the future :)


(The following still has the bug that if I shutdown my server libvirt
will save my VMs to disk along with information on the attached USB
devices which probably is completely bogus when the guests are later
restored. I have not found a hook that'd get run when the VM is about to 
be saved to disk but is still running.)


 /etc/udev/rules.d/90-usb-libvirt-hotplug.rules

# 433 MHz transmitter for home automation
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.1",RUN+="/root/udev-usb-hotplug
 radio.home"
# USB printer
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.2",RUN+="/root/udev-usb-hotplug
 print.home"
# DVB capture cards
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.4",RUN+="/root/udev-usb-hotplug
 tv.home"
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.3",RUN+="/root/udev-usb-hotplug
 tv.home"
# 4G modem
SUBSYSTEM=="usb",DEVPATH=="/devices/pci:00/:00:14.0/usb1/1-4",RUN+="/root/udev-usb-hotplug
 backupgateway"

 /root/udev-usb-hotplug

#!/bin/bash

domain="$1"

if [ "$ACTION" = "remove" ]; then
/root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh "$domain"
else
# Delay "add" events to workaround 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846173
/usr/bin/systemd-run --on-active=5 --timer-property=AccuracySec=100ms env SUBSYSTEM="$SUBSYSTEM" DEVTYPE="$DEVTYPE" 
ACTION="$ACTION" BUSNUM="$BUSNUM" DEVNUM="$DEVNUM" /root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh 
"$domain"
fi


 /root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh

See https://github.com/olavmrk/usb-libvirt-hotplug

 /etc/libvirt/hooks/qemu


#!/bin/bash

add_usb_device() {
sysdir="$1"
vm="$2"
if [ -e "$sysdir" ]; then
bus="$(grep BUSNUM= $sysdir/uevent | cut -d = -f2)"
dev="$(grep DEVNUM= $sysdir/uevent | cut -d = -f2)"
# hack: avoid deadlocks that happen if you call libvirt API from a 
libvirt hook..
setsid nohup env ACTION=add SUBSYSTEM=usb DEVTYPE=usb_device BUSNUM=$bus DEVNUM=$dev 
/root/usb-libvirt-hotplug/usb-libvirt-hotplug.sh "$vm" < /dev/null > /dev/null 2>&1 
&

fi
}

if [ "$2" = "started" -o "$2" = "restore" ]; then
case "$1" in
radio.home)
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.1' radio.home
;;
print.home)
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.2' print.home
;;
tv.home)
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.3' tv.home
add_usb_device 
'/sys/devices/pci:00/:00:14.0/usb1/1-9/1-9.1/1-9.1.4' tv.home
;;
backupgateway)
add_usb_device '/sys/devices/pci:00/:00:14.0/usb1/1-4' 
backupgateway
;;
esac
fi

cat

exit 0


-Timo



Bug#846173: libvirt-daemon: Fails to locate existing usb device

2017-07-22 Thread Ron
Control: clone -1 -2
Control: reassign -2 qemu 1:2.7+dfsg-1
Control: retitle -2 qemu since 2.7 fails to hotplug USB devices from udev rules


Hi,

On Tue, 29 Nov 2016 08:14:03 +0100, Guido Günther wrote:
> On Mon, Nov 28, 2016 at 10:56:33PM +, David Gilmour wrote:
> > USB hotplug on this host was working normally as recently as a couple
> > of months ago; possibly a stretch update caused a regression. As of
> > now, I am unable to make USB hotplug to guests work.
> > 
> > Thanks so much for looking into this.
> 
> I won't have time to look into this, sorry. I suggest to:
> 
> * set libvirt debugging to debug
> * check which monitor commands get issued to attach the device
> 
> Create a new script run from the udev rule that
> 
> * checks the necessary device nodes are actually there
> * uses the above monitor commands via "virsh qemu-monitor-command"
> 
> if it still fails it's within qemu if not there's something broken in
> libvirt.

I did have some time and motivation to look into this, since we do this
for VM support in the bit-babbler (USB TRNG support) package too, and the
view that I have of it is that it's a libvirt bug, triggered by a change
in the qemu 2.7 release.  So I'm cloning a copy of it there too, since
we may want to back out that change until this is fixed properly in
libvirt.


The crux of the problem is that although QEMU gives us the option to
hotplug a USB device by vendor/product ID, or by hostbus+hostport
(the physical usb port on the host) or by hostbus+hostaddr (the logical
USB device number which changes each time it is plugged in or gets
re-enumerated) - libvirt will *always* pass it to QEMU using the
hostaddr that it determines, even if in its config you passed that as
vendor/product ID.  And libvirt gives us no option to use the hostport
at all.

This was somewhat workable (though suboptimal) in the case where you
might have multiple devices with the same product ID (a much better
solution there would be for libvirt to support vendor/product/serial
as a unique identifying tuple which never changes) - until this change
was made in QEMU 2.7:


 commit e058fa2dd599ccc780d334558be9c1d155222b80
 Author: Gerd Hoffmann 
 Date:   Fri Jun 3 11:12:55 2016 +0200

usb-host: add special case for bus+addr

This patch changes usb-host behavior in case we hostbus= and hostaddr=
properties are used to identify the usb device in question.  Instead of
adding the device to the hotplug watchlist we try to open directly using
the given bus number and device address.

Putting a device specified by hostaddr to the hotplug watchlist isn't
a great idea as the address isn't a fixed property.  It changes every
time the device is plugged in.  So considering this case as "use the
device at bus:addr _now_" is more sane.  Also usb-host will throw errors
in case it can't initialize the host device.

Note: For devices on the hotplug watchlist (hostport or vendorid or
productid specified) qemu continues to ignore errors and keeps
monitoring the usb bus to see if the device eventually shows up.

Signed-off-by: Gerd Hoffmann 
Message-id: 1464945175-28939-1-git-send-email-kra...@redhat.com

diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index 8b774f4..da59c29 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -81,6 +81,7 @@ struct USBHostDevice {
 uint32_t iso_urb_frames;
 uint32_t options;
 uint32_t loglevel;
+bool needs_autoscan;
 
 /* state */
 QTAILQ_ENTRY(USBHostDevice)  next;
@@ -974,9 +975,32 @@ static void usb_host_exit_notifier(struct Notifier *n, 
void *data)
 }
 }
 
+static libusb_device *usb_host_find_ref(int bus, int addr)
+{
+libusb_device **devs = NULL;
+libusb_device *ret = NULL;
+int i, n;
+
+if (usb_host_init() != 0) {
+return NULL;
+}
+n = libusb_get_device_list(ctx, &devs);
+for (i = 0; i < n; i++) {
+if (libusb_get_bus_number(devs[i]) == bus &&
+libusb_get_device_address(devs[i]) == addr) {
+ret = libusb_ref_device(devs[i]);
+break;
+}
+}
+libusb_free_device_list(devs, 1);
+return ret;
+}
+
 static void usb_host_realize(USBDevice *udev, Error **errp)
 {
 USBHostDevice *s = USB_HOST_DEVICE(udev);
+libusb_device *ldev;
+int rc;
 
 if (s->match.vendor_id > 0x) {
 error_setg(errp, "vendorid out of range");
@@ -997,11 +1021,33 @@ static void usb_host_realize(USBDevice *udev, Error 
**errp)
 QTAILQ_INIT(&s->requests);
 QTAILQ_INIT(&s->isorings);
 
+if (s->match.addr && s->match.bus_num &&
+!s->match.vendor_id &&
+!s->match.product_id &&
+!s->match.port) {
+s->needs_autoscan = false;
+ldev = usb_host_find_ref(s->match.bus_num,
+ s->match.addr);
+if (!ld

Bug#846173: [Pkg-libvirt-maintainers] Bug#846173: libvirt-daemon: Fails to locate existing usb device

2016-11-28 Thread Guido Günther
On Mon, Nov 28, 2016 at 10:56:33PM +, David Gilmour wrote:
> 
> Package: libvirt-daemon
> Version: 2.4.0-1+b1
> Severity: important
> 
> Dear Maintainer,
> 
> I have a custom udev rule used to implement usb-hotplug support for the a 
> guest, whose name is dgw.
> 
> This is the contents of /etc/udev/rules.d/91-hotplug.rules:
> ---
> ACTION=="add", \
> SUBSYSTEM=="usb", \
> ENV{ID_VENDOR_ID}=="18ec", \
> ENV{ID_MODEL_ID}=="3399", \
> RUN+="/usr/bin/virsh attach-device dgw 
> /home/david/udev/david-webcam-dgw.xml"
> 
> ACTION=="remove", \
> SUBSYSTEM=="usb", \
> ENV{ID_VENDOR_ID}=="18ec", \
> ENV{ID_MODEL_ID}=="3399", \
> RUN+="/usr/bin/virsh detach-device dgw 
> /home/david/udev/david-webcam-dgw.xml"
> ---
> 
> This is the content of david-webcam-dgw.xml:
> ---
> 
>   
> 
> 
>   
> 
> ---
> 
> The rule is correctly activated when the device is plugged in, but with udev 
> logging set to debug level, the syslog trace is as follows:
> 
> ---
> Nov 26 14:48:27 dgh systemd-udevd[8692]: Process 'mtp-probe
> /sys/devices/pci:00/:00:14.0/usb1/1-3/1-3.1 1 67' succeeded.
> Nov 26 14:48:27 dgh systemd-udevd[8692]: RUN '/usr/bin/virsh attach-device 
> dgw /home/david/udev/david-webcam-dgw.xml' 
> /etc/udev/rules.d/91-dg-webcam-dgw-hotplug.rules:10
> Nov 26 14:48:27 dgh systemd-udevd[8692]: handling device node 
> '/dev/bus/usb/001/067', devnum=c189:66, mode=0664, uid=0, gid=100 Nov 26 
> 14:48:27 dgh systemd-udevd[8692]: set permissions /dev/bus/usb/001/067, 
> 020664, uid=0, gid=100 Nov 26 14:48:27 dgh systemd-udevd[8692]:
> creating symlink '/dev/char/189:66' to '../bus/usb/001/067'
> Nov 26 14:48:27 dgh systemd-udevd[8692]: created db file 
> '/run/udev/data/c189:66' for '/devices/pci:00/:00:14.0/usb1/1-3/1-3.1'
> Nov 26 14:48:27 dgh systemd-udevd[8694]: starting '/usr/bin/virsh 
> attach-device dgw /home/david/udev/david-webcam-dgw.xml'
> Nov 26 14:48:27 dgh libvirtd[3841]: internal error: unable to execute QEMU 
> command 'device_add':
> failed to find host usb device 1:67 Nov 26 14:48:27 dgh systemd-udevd[8692]: 
> '/usr/bin/virsh attach- device dgw 
> /home/david/udev/david-webcam-dgw.xml'(err) 'error: '
> Nov 26 14:48:27 dgh systemd-udevd[8692]: '/usr/bin/virsh attach-device dgw 
> /home/david/udev/david-
> webcam-dgw.xml'(err) 'Failed to attach device from 
> /home/david/udev/david-webcam-dgw.xml'
> Nov 26 14:48:27 dgh systemd-udevd[8692]: '/usr/bin/virsh attach-device dgw 
> /home/david/udev/david-
> webcam-dgw.xml'(err) 'error: internal error: unable to execute QEMU command 
> 'device_add': failed to find host usb device 1:67'
> Nov 26 14:48:27 dgh systemd-udevd[8692]: '/usr/bin/virsh attach-device dgw 
> /home/david/udev/david-
> webcam-dgw.xml'(out) ''
> Nov 26 14:48:27 dgh systemd-udevd[8692]: Process '/usr/bin/virsh 
> attach-device dgw /home/david/udev/david-webcam-dgw.xml' failed with exit 
> code 1.
> ---
> 
> As you can see, the error is that QEMU device_add fails, complaining it 
> cannot find the usb device that was indeed created.
> 
> Additional detail: The above log was generated after the addition of another 
> rules file Thinking it might be a permission problem,I added another rules 
> file 50-myusb.rules as follows:
> ---
> SUBSYSTEMS=="usb", GROUP="users", MODE="0666"
> ---
> but with or without this rules file the error reported is the same.
> 
> Intrestingly, the commands
> 
> virsh attach-devcice dgw /home/david/udev/david-webcam-dgw.xml
> and
> virsh detach-devcice dgw /home/david/udev/david-webcam-dgw.xml
> 
> both work and successfully attach the device to the guest if the device is 
> connected - but the udev script fails.
> 
> USB hotplug on this host was working normally as recently as a couple of 
> months ago; possibly a stretch update caused a regression. As of now, I am 
> unable to make USB hotplug to guests work.
> 
> Thanks so much for looking into this.

I won't have time to look into this, sorry. I suggest to:

* set libvirt debugging to debug
* check which monitor commands get issued to attach the device

Create a new script run from the udev rule that

* checks the necessary device nodes are actually there
* uses the above monitor commands via "virsh qemu-monitor-command"

if it still fails it's within qemu if not there's something broken in
libvirt.

Cheers,
 -- Guido



Bug#846173: libvirt-daemon: Fails to locate existing usb device

2016-11-28 Thread David Gilmour

Package: libvirt-daemon
Version: 2.4.0-1+b1
Severity: important

Dear Maintainer,

I have a custom udev rule used to implement usb-hotplug support for the a 
guest, whose name is dgw.

This is the contents of /etc/udev/rules.d/91-hotplug.rules:
---
ACTION=="add", \
SUBSYSTEM=="usb", \
ENV{ID_VENDOR_ID}=="18ec", \
ENV{ID_MODEL_ID}=="3399", \
RUN+="/usr/bin/virsh attach-device dgw 
/home/david/udev/david-webcam-dgw.xml"

ACTION=="remove", \
SUBSYSTEM=="usb", \
ENV{ID_VENDOR_ID}=="18ec", \
ENV{ID_MODEL_ID}=="3399", \
RUN+="/usr/bin/virsh detach-device dgw 
/home/david/udev/david-webcam-dgw.xml"
---

This is the content of david-webcam-dgw.xml:
---

  


  

---

The rule is correctly activated when the device is plugged in, but with udev 
logging set to debug level, the syslog trace is as follows:

---
Nov 26 14:48:27 dgh systemd-udevd[8692]: Process 'mtp-probe
/sys/devices/pci:00/:00:14.0/usb1/1-3/1-3.1 1 67' succeeded.
Nov 26 14:48:27 dgh systemd-udevd[8692]: RUN '/usr/bin/virsh attach-device dgw 
/home/david/udev/david-webcam-dgw.xml' 
/etc/udev/rules.d/91-dg-webcam-dgw-hotplug.rules:10
Nov 26 14:48:27 dgh systemd-udevd[8692]: handling device node 
'/dev/bus/usb/001/067', devnum=c189:66, mode=0664, uid=0, gid=100 Nov 26 
14:48:27 dgh systemd-udevd[8692]: set permissions /dev/bus/usb/001/067, 020664, 
uid=0, gid=100 Nov 26 14:48:27 dgh systemd-udevd[8692]:
creating symlink '/dev/char/189:66' to '../bus/usb/001/067'
Nov 26 14:48:27 dgh systemd-udevd[8692]: created db file 
'/run/udev/data/c189:66' for '/devices/pci:00/:00:14.0/usb1/1-3/1-3.1'
Nov 26 14:48:27 dgh systemd-udevd[8694]: starting '/usr/bin/virsh attach-device 
dgw /home/david/udev/david-webcam-dgw.xml'
Nov 26 14:48:27 dgh libvirtd[3841]: internal error: unable to execute QEMU 
command 'device_add':
failed to find host usb device 1:67 Nov 26 14:48:27 dgh systemd-udevd[8692]: 
'/usr/bin/virsh attach- device dgw /home/david/udev/david-webcam-dgw.xml'(err) 
'error: '
Nov 26 14:48:27 dgh systemd-udevd[8692]: '/usr/bin/virsh attach-device dgw 
/home/david/udev/david-
webcam-dgw.xml'(err) 'Failed to attach device from 
/home/david/udev/david-webcam-dgw.xml'
Nov 26 14:48:27 dgh systemd-udevd[8692]: '/usr/bin/virsh attach-device dgw 
/home/david/udev/david-
webcam-dgw.xml'(err) 'error: internal error: unable to execute QEMU command 
'device_add': failed to find host usb device 1:67'
Nov 26 14:48:27 dgh systemd-udevd[8692]: '/usr/bin/virsh attach-device dgw 
/home/david/udev/david-
webcam-dgw.xml'(out) ''
Nov 26 14:48:27 dgh systemd-udevd[8692]: Process '/usr/bin/virsh attach-device 
dgw /home/david/udev/david-webcam-dgw.xml' failed with exit code 1.
---

As you can see, the error is that QEMU device_add fails, complaining it cannot 
find the usb device that was indeed created.

Additional detail: The above log was generated after the addition of another 
rules file Thinking it might be a permission problem,I added another rules file 
50-myusb.rules as follows:
---
SUBSYSTEMS=="usb", GROUP="users", MODE="0666"
---
but with or without this rules file the error reported is the same.

Intrestingly, the commands

virsh attach-devcice dgw /home/david/udev/david-webcam-dgw.xml
and
virsh detach-devcice dgw /home/david/udev/david-webcam-dgw.xml

both work and successfully attach the device to the guest if the device is 
connected - but the udev script fails.

USB hotplug on this host was working normally as recently as a couple of months 
ago; possibly a stretch update caused a regression. As of now, I am unable to 
make USB hotplug to guests work.

Thanks so much for looking into this.

-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.8.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libvirt-daemon depends on:
ii  libapparmor12.10.95-6
ii  libaudit1   1:2.6.7-1
ii  libavahi-client30.6.32-1
ii  libavahi-common30.6.32-1
ii  libblkid1   2.29-1
ii  libc6   2.24-5
ii  libcap-ng0  0.7.7-3
ii  libdbus-1-3 1.10.12-1
ii  libdevmapper1.02.1  2:1.02.136-1
ii  libfuse22.9.7-1
ii  libgnutls30 3.5.6-4
ii  libnetcf1   1:0.2.8-1+b1
ii  libnl-3-200 3.2.27-1
ii  libnl-route-3-200   3.2.27-1
ii  libnuma12.0.11-2
ii  libparted2  3.2-16+b1
ii  libpcap0.8  1.8.1-3
ii  libpciaccess0   0.13.4-1
ii  librados2   0.80.11-1.1
ii  librbd1 0.80.11-1.1
ii  libsasl2-2  2.1.27~72-g88d82a3+dfsg-1
ii  libselinux1 2.6-3
ii  libssh2-1   1.7.0-1
ii  libudev1232-3
ii  libvirt02.4.0-1+b1
ii  libxen-4.8  4.8.0~rc5-1
ii  libxenstore3.0  4.8.0~rc5-1
ii  libxml2 2.9.4+df