[libvirt] [PATCH V3 1/2] Intorduce file descriptor set for QEMU domains

Stefan Berger stefanb at linux.vnet.ibm.com
Thu Feb 7 17:56:45 UTC 2013


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 at linux.vnet.ibm.com>
>>
>> ---
>>   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 ...

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>

Regards,
    Stefan




More information about the libvir-list mailing list