On Thu, Mar 08, 2007 at 12:59:30PM +0000, Daniel P. Berrange wrote:
On Thu, Mar 08, 2007 at 04:52:43PM +0900, Masayuki Sunou wrote:
> Hi
>
> When domHVM started by virsh create,
> the information of USB setting is not saved by vish dumpxml.
> The reason is that USB setting is defined by Xen itself, not virsh.
>
> This patch enables USB device setting information handling
> on virsh create/virsh dumpxml.
I've been wondering about how we'll represent USB devices in the
libvirt XML. The 'usbdevice' attribute in teh XenD SEXPR is just
a straight pass-through to QEMU's -usbdevice command line arg.
This arg can accept values of the form:
- 'mouse'
- 'tablet'
- 'disk:file' eg 'disk:/var/lib/xen/images/usbdrive.img'
- 'host:bus.addr' eg 'host:01.02' for BUS 01, device 02
- 'host:vendor:product' eg 'host:0324:01a4'
http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC34
The patch you've got just puts all this into a single 'usbdevice'
attribute on a <usb> element. I see there is also a single empty
<usb> tag to identify whether the virtual USB bus is enabled at
all. So we have
<usb/>
<usb usbdevice='mouse'/>
<usb usbdevice='tablet/>
<usb usbdevice='disk:/var/lib/xen/images/usbdrive.img'/>
<usb usbdevice='host:01.02'/>
<usb usbdevice='host:0324:01a4'/>
I'm wondering if we'd be better offnormalizing the attributes somewhat.
<usb bus='1'/>
<usb hid='mouse'/> (hid is USB speak for Human Input Device)
<usb hid='tablet'/>
<usb disk='/var/lib/xen/images/usbdrive.img'/>
<usb bus='01' addr='02'/>
<usb vendor='0324' product='01a4'/>
Or alternatively, multiplex off a 'type' attribute
<usb type='bus'/>
<usb type='mouse'/>
<usb type='tablet'/>
<usb type='disk' path='/var/lib/xen/images/usbdrive.img'/>
<usb type='host' bus='01' addr='02'/>
<usb type='host' vendor='0324' product='01a4'>
What do people think ?
That I prefer we first discuss a bit more the format before applying such a
patch. I assume the usb description need to go in the <devices> block, right ?
I prefer the last version of the 3, you just check for a first attribute
and if found derive the processing code according to the value. It's IMHO
better than the second structurally speaking, and I really dislike the first
because it keeps the structure outside of XML which requires additional
parsing and makes things harder.
Now thinking out loud a bit, would <usb> need to be a structure, physically
it is structured around busses, do we need to reflect that, do we need
to make provision for this. Also in what respect is USB specific, I mean
<devices>
<disk path="..." />
</devices>
and
<devices>
<usb>
<disk path="..." />
</usb>
</devices>
Can we just share parsing or is the fact that a disk hooked on USB bus such
a real difference ?
Daniel
--
Red Hat Virtualization group
http://redhat.com/virtualization/
Daniel Veillard | virtualization library
http://libvirt.org/
veillard(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/