On 05/03/2012 01:31 AM, Eric Blake wrote:
On 05/01/2012 02:16 AM, Guannan Ren wrote:
> One usb device could be allowed to hotplug in at a time. If user
> give a xml as follows. Probably there are two usb devices avaiable
s/avaiable/available/
> but with different value of "bus, device"
>
> we give a error to let user use<address> to specify the desired one.
>
> <hostdev mode='subsystem' type='usb' managed='yes'>
> <source>
> <vendor id='0x15e1'/>
> <product id='0x2007'/>
> </source>
> </hostdev>
> ---
> src/qemu/qemu_hotplug.c | 68 +++++++++++++++++++++++++++++++++++++---------
> 1 files changed, 54 insertions(+), 14 deletions(-)
>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index 7cf7b90..15693a0 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -1121,6 +1121,9 @@ int qemuDomainAttachHostDevice(struct qemud_driver *driver,
> virDomainObjPtr vm,
> virDomainHostdevDefPtr hostdev)
> {
> + usbDeviceList *list;
> + usbDevice * usb = NULL;
Style: no space after *.
> + if (!(list = usbDeviceListNew()))
> + goto cleanup;
virReportOOMError()
OOM error will be raised in usbDeviceListNew()
we get 'NULL' value in that case.
> +
> + if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) {
> + unsigned vendor = hostdev->source.subsys.u.usb.vendor;
> + unsigned product = hostdev->source.subsys.u.usb.product;
> + unsigned bus = hostdev->source.subsys.u.usb.bus;
> + unsigned device = hostdev->source.subsys.u.usb.device;
> +
> + if (vendor&& bus) {
Same question as in 2/3 about valid values for bus.
> + if (usbDeviceListCount(devs)> 1) {
> + qemuReportError(VIR_ERR_XML_ERROR,
> + _("multiple USB deivces %x:%x, "
s/deivces/devices/