[ bah, cc'ing the list this time ]
On Tue, Nov 05, 2019 at 03:21:04PM -0500, Dave Allan wrote:
On Fri, Nov 01, 2019 at 07:48:46AM +0000, Nikolay Shirokovskiy wrote:
On 31.10.2019 19:50, Dave Allan wrote:
On Thu, Oct 31, 2019 at 10:40:42AM +0000, Nikolay Shirokovskiy wrote:
On 30.10.2019 23:21, Dave Allan wrote:
On Tue, Oct 29, 2019 at 11:17:51AM +0300, Nikolay Shirokovskiy wrote:
Diff to v2[1] version:
- add 'replug' attribute for hostdev element to allow replug semantics
- avoid accuiring domain lock in event loop thread on udev events as
suggested by Peter
- nit picks after review by Daniel Henrique Barboza
* is used to mark patches that were 'Reviewed-by' by Daniel (sometimes
with very minor changes to take into account new replug flag).
I did some basic testing today, and I'm seeing the device appear and disappear
in the guest, which is great and much nicer than my ugly udev rule hack. I did
find what I think is a bug though: if the USB device is plugged in at domain
start, unplugging it while the domain is running does not cause it to
disappear, and subsqeuently replugging it into the host causes a second
instance of the device to appear in the guest.
Hi.
Hmm. Looks like you're using startupPolicy=optional otherwise it is not
possible to start domain without a device. But in this case the whole replug
thing
is disabled and further I don't understand how the second instance of the
device can appear.
If device is present at domain start then replug is in play. And I cannot
reproduce the bug.
I am using startupPolicy optional, and I'm seeing the device attached and
detached 100% of the time. I can start the domain with or without the device
attached to the host, plug and unplug it and it appears and disappears from the
guest, which is exactly the behavior I want. My domain XML is attached.
Hi,
did you actually see your device in guest or just some usb device? Because if
domain is started without a device present on host then
libvirt inserts dummy device which is unusable actually. And this dummy device
is kept until the end even if you plug device on node.
Sorry to be slow responding, I wanted to confirm that I could talk to the
device in the guest. Today I wasn't able to reproduce the duplicate device in
the guest. Eerything worked as I would expect: if the device wasn't plugged
into the host, it wasn't shown by lsusb in the guest. Plugging in the device
to the host caused it to appear in the guest. If the device was shown by lsusb
in the guest I was able to talk to it.
Nikolay
I tested a few more times just now, and I saw the duplicate device appear in
the guest the first time I tried, but I have not been able to reproduce it
again after that.
Can you clarify on you use case?
My usecase is that I'm flashing the USB device with a program running in the
VM. I keep the VM running, and when I need to reflash, I connect the device,
so having the startupPolicy optional is useful.
Nikolay
Can be applied on:
commit bf0e7bdeeb790bc6ba5732623be0d9ff26a5961a
Author: Peter Krempa <pkre...@redhat.com>
Date: Thu Oct 24 15:50:50 2019 +0200
util: xml: Make virXMLFormatElement void
[1] https://www.redhat.com/archives/libvir-list/2019-September/msg00321.html
Nikolay Shirokovskiy (12):
conf: add replug option for usb hostdev
qemu: track hostdev delete intention
*qemu: support host usb device unplug
*qemu: support usb hostdev plugging back
qemu: handle host usb device add/del udev events
*qemu: handle libvirtd restart after host usb device unplug
*qemu: handle race on device deletion and usb host device plugging
qemu: hotplug: update device list on device deleted event
*qemu: handle host usb device plug/unplug when libvirtd is down
*qemu: don't mess with non mandatory hostdevs on reattaching
qemu: handle detaching of unplugged hostdev
*conf: parse hostdev missing flag
docs/formatdomain.html.in | 10 +-
docs/schemas/domaincommon.rng | 5 +
src/conf/domain_conf.c | 62 +++
src/conf/domain_conf.h | 17 +
src/qemu/Makefile.inc.am | 2 +
src/qemu/qemu_conf.h | 3 +
src/qemu/qemu_domain.c | 2 +
src/qemu/qemu_domain.h | 2 +
src/qemu/qemu_driver.c | 404 +++++++++++++++++-
src/qemu/qemu_hotplug.c | 104 ++++-
src/qemu/qemu_hotplug.h | 3 +-
src/qemu/qemu_process.c | 60 +++
src/util/virhostdev.c | 2 +
tests/qemuhotplugtest.c | 2 +-
tests/qemuxml2argvdata/hostdev-usb-replug.xml | 36 ++
.../qemuxml2xmloutdata/hostdev-usb-replug.xml | 40 ++
tests/qemuxml2xmltest.c | 1 +
17 files changed, 733 insertions(+), 22 deletions(-)
create mode 100644 tests/qemuxml2argvdata/hostdev-usb-replug.xml
create mode 100644 tests/qemuxml2xmloutdata/hostdev-usb-replug.xml
--
2.23.0
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list