[ 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 <pkrempa(a)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(a)redhat.com
>>>>>https://www.redhat.com/mailman/listinfo/libvir-list
>>>>>
>>>>>
>