On 02/07/2013 12:58 PM, Daniel P. Berrange wrote:
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(a)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 ...
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.
you agree to this XML ?
<fdsets>
<entry alias='ide0-0-0' fdset='1'/>
<entry alias='serial0' fdset='2'/>
<entry alias='serial1' fdset='3'/>
</fdsets>
Stefan