On 01/31/2013 12:00 AM, Jason Wang wrote: > On 01/31/2013 02:29 AM, Eric Blake wrote: >> On 01/30/2013 04:12 AM, Jason Wang wrote: >> >>> With this changes, user could start a multiqueue virtio-net device through >>> >>> ./qemu -netdev tap,id=hn0,queues=2,vhost=on -device virtio-net-pci,netdev=hn0 >>> >>> Management tools such as libvirt can pass multiple pre-created fds/vhostfds through >>> >>> ./qemu -netdev tap,id=hn0,fds=X:Y,vhostfds=M:N -device virtio-net-pci,netdev=hn0 >> Do we really need specific fds= parsing, or can we reuse the existing >> -add-fd command line option to our advantage? I guess what I'm asking >> is how hotplug will work; and if hotplug takes a file name, shouldn't >> the command line also take a name; and if the command line takes a name, >> what's wrong with: >> >> ./qemu -add-fd fdset=1,fd=X -add-fd fdset=2,fd=Y -add-fd fdset=3,fd=M >> -add-fd fdset=4,fd=N -netdev >> tap,id=hn0,fds=/dev/fdset/1:/dev/fdset/2,vhostfds=/dev/fdset/3:/dev/fdset/4 >> -device virtio-net-pci,netdev=hn0 >> > > AFAIK, tap does not support fdset now, so this requirement is beyond the > scope of multiqueue itself. We can do this in the future. Btw does > libvirt support add-fd now? Anything that uses qemu_open() supports fdset now. The question I'm asking is whether the command line has a way to pass /path/to/name (which can be presented as /dev/fdset/nnn for add-fd usage) now, or whether it only supports fds=integers. > > For hotplug, it just work if you pass multiple file descriptors one by > one through getfd and then use fds=X:Y,vhostfds=M:N. For hotplug, you can't pass integers; you have to name the fds either way. Either you name it with getfd, or you name it with add-fd. But getfd is not as nice as add-fd when it comes to ensuring that fds are not leaked in qemu, even when the management app such as libvirt restarts. Furthermore, if it is possible to specify taps by pathname instead of by fd inheritance, then using getfd means you have to support two different approaches in QMP to distinguish which string is being supplied, while supporting add-fd means you only have to support qemu_open() which handles both direct names and fd passing in a single string interface. As for libvirt support of add-fd, I'm currently working with Stefan Berger to get patches applied; the goal is tha libvirt 1.0.3 (end of February) will support add-fd. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature