[virt-tools-list] [PATCH v2 2/2] addhardware: use bus, device to distingush usb products
Guannan Ren
gren at redhat.com
Tue Apr 30 15:01:05 UTC 2013
On 04/30/2013 12:04 AM, Cole Robinson wrote:
> On 04/29/2013 09:07 AM, Guan Nan Ren wrote:
>> I realized this patch only tries to solve one aspect of the whole duplicate usb devices issue.
>> If there is a usb device which has been attached to guest with vendor/product, then I plug a new
>> duplicate usb device into host, the new device will use vendor/product/bus/addr to be attached
>> to the same guest. If so, we have to update the first usb device with bus/addr info too, otherwise,
>> the guest will throw an error at next boot. Reverse the process when removing the duplicate.
>>
>> One way of doing this is before adding the duplicate usb device into guest, we update the persistent
>> guest XML with corresponding bus/addr of first usb device. The hard part is its bus/addr info is lost
>> already at this time.
>>
>> The other way is updating first device in tick(), when new duplicate node device is added, the
>> signal handler of 'nodedev-added' can help update the first device which has been attached to
>> a guest by redefining guest persistent XML. The downside is there too, we have to go through all of
>> guest to update every time when new node device is plugged into host.
>>
>> And currently, one usb device only use vendor/product after attached into a guest, that means I can
>> can change it to any usb device as long as they own the same vendorId/productId after vm reboot. If we
>> use vendor/product/bus/addr, there is no such problem.
>>
>> Any idea to fix the issue is welcome :)
>> About above words, please feel free to correct me.
>>
> Hmm, indeed this is a tricky problem. But it makes me think that
> differentiating on duplicate vendor/product by bus/addr just isn't the best
> fix (although it's definitely good that libvirt supports it now). Was any
> thought given to allowing USB device serial numbers in the XML? Should be
> basically the same of libvirt looking up the bits in sysfs like is done for
> vendor/product, and _should_ be unique although I don't know how well that's
> true in the wild.
Yeah, if each of usb devices has a identifier like MAC for NIC,
things will be so hard.
I checked for a while, there is no such serial number, it is
reasonable though,
there is so many kind of usb devices and vendors.
>
> The case where a duplicate device is added to the host later, honestly the
> best we can do is to try and provide a useful error here, and tell the users
> to re-attach their devices. We could do that with a pre-start validation hook
> which could be useful for other things in the future.
>
> But honestly I'd be quite comfortable just telling people that their scenario
> is not one where virt-manager is going to help them out much, and they will
> just need to remove and reattach the devices to all guests to get the updated
> bus/addr info.
The pre-start hook is a good idea, I implemented one in my v3 path 3/3
if you have time, please help review it.
Guannan
More information about the virt-tools-list
mailing list