On Thu, Feb 07, 2013 at 12:56:45PM -0500, Stefan Berger wrote: > On 02/07/2013 10:12 AM, Daniel P. Berrange wrote: > >On Mon, Feb 04, 2013 at 07:12:37PM -0500, Stefan Berger wrote: > >>Create field in virDomainDeviceInfo structure to hold > >>file descriptor set the device is associated with. Have > >>the number written into the Device Info XML and parsed > >>from the XML. > >> > >>Remember the next-toy use file descriptor set in the QEMU > >>private domain structure. > >>Upon libvirt restart determine the maximum file descriptor > >>set used in the Device Info XML and remember the > >>next-to-use file descriptor set in the QEMU private domain > >>structure. > >> > >>Upon termination of a domain, reset the next-to-use file > >>descriptor set to its initial value '1'. > >> > >>Stefan Berger <stefanb@xxxxxxxxxxxxxxxxxx> > >> > >>--- > >> src/conf/capabilities.h | 5 ++++- > >> src/conf/domain_conf.c | 20 +++++++++++++++++--- > >> src/conf/domain_conf.h | 1 + > >> src/lxc/lxc_domain.c | 3 ++- > >> src/qemu/qemu_domain.c | 23 ++++++++++++++++++++++- > >> src/qemu/qemu_domain.h | 2 ++ > >> src/qemu/qemu_process.c | 2 ++ > >> 7 files changed, 50 insertions(+), 6 deletions(-) > >I really don't like the fact that we're modifying the virDomainDef > >structs, which are intended to hold static config description, to > >also hold QEMU specific dynamic state. We did this in the past > >before we had the per-driver 'privateData' associated with > >virDomainObjPtr instances. > > In these patches we are storing the fdset that's in use by a > particular device in the virDomainDeviceInfo structure and are > persisting that fdset number next to the device's alias into XML > written into /var/run/libvirt/qemu to be able to restore it upon > libvirt restart. Now we would either need a similar per-device > structure in parallel to those virDomainDeviceInfo structures or > connect a QEMU private data structure to that virDomainDeviceInfo > structure for storing the dynamic data and to keep reference back to > the device. Not sure what's the best path ... Just have a hashtable mapping device alias names -> fd set numbers in the qemuDomainObjPrivatePtr, and write that out in the QEMU private XML. There's no need to directly mirror the structs. > > This is how the per-device XML in /var/run/libvirt/qemu/xyz.xml looks now: > > <serial type='pipe'> > <source path='/tmp/testpipe'/> > <target port='1'/> > <alias name='serial1' fdset='3'/> > </serial> Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list