On 01/29/2013 04:41 PM, Eric Blake wrote:
On 01/29/2013 09:52 AM, Stefan Berger wrote:
> Add a file descriptor set to the QEMU private domain structure.
>
> ---
> src/qemu/qemu_domain.c | 4 ++++
> src/qemu/qemu_domain.h | 3 +++
> 2 files changed, 7 insertions(+)
In isolation, this patch looks okay. But the real question is what it
will be used for. I'm worried that we don't have quite the right
implementation design in place yet.
Unfortunately, I think we need much more than storing just a set of
integers - we need a full blown hash table, where the key is the fd we
passed through, and the value is more details (the file name or other
details describing the fd that we are passing, and the resulting qemu
fdset number that the fd will belong to). Furthermore, we need to make
this storage persist across libvirt reboots, which means it needs to be
part of the (internal-only) XML that we save in
/var/run/libvirt/qemu/$dom.xml, so we must also modify
qemuDomainObjPrivateXMLFormat() to output the contents of this set (or
hash table) in a reusable manner.
For that matter, I just realized that we already have an <alias> XMl
element in the internal-only XML of each /var/run/libvirt/qemu/dom.xml;
which is part of the virDomainDeviceInfo. It seems like this struct
would be a useful place for us to add another XML attribute stating what
qemu fdset is associated with any given device. That also means that in
patch 4/4, we don't have to pass a virIntSet around; any code like
qemuBuildChrChardevStr that is already looking up an 'alias' associated
with a device can also look up an fdset from the same struct.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org