mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 20:15:17 +00:00
qemu: domain: Add helper for generating 'fdset' ids for VM startup
When starting a VM we must assign unique IDs for fdsets we add via '-add-fd'. For now it was done by using the index of the filedescriptor passed to the virCommand. That approach is not very flexible, because you need to have already passed the 'fd' to virCommand before generating the fdset path, and also won't nicely work with fdsets containing two or more fds. This patch introduces a counter into the private data of a qemu domain so that we can allocate unique ids without relying on virCommand. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
9b07991c19
commit
56d16e6145
@ -683,6 +683,33 @@ qemuDomainStorageIDReset(qemuDomainObjPrivate *priv)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* qemuDomainFDSetIDNew:
|
||||
* @priv: qemu VM private data object.
|
||||
*
|
||||
* Generate a new unique id for a fdset. Note that this is necessary only for
|
||||
* startup. When running qemu auto-assigns id for added fdset.
|
||||
*/
|
||||
unsigned int
|
||||
qemuDomainFDSetIDNew(qemuDomainObjPrivate *priv)
|
||||
{
|
||||
return priv->fdsetindex++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* qemuDomainFDSetIDReset:
|
||||
* @priv: qemu VM private data object.
|
||||
*
|
||||
* Resets the data for the fdset ID generator.
|
||||
*/
|
||||
static void
|
||||
qemuDomainFDSetIDReset(qemuDomainObjPrivate *priv)
|
||||
{
|
||||
priv->fdsetindex = 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
qemuDomainSecretInfoClear(qemuDomainSecretInfo *secinfo,
|
||||
bool keepAlias)
|
||||
@ -1683,6 +1710,8 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivate *priv)
|
||||
/* reset node name allocator */
|
||||
qemuDomainStorageIDReset(priv);
|
||||
|
||||
qemuDomainFDSetIDReset(priv);
|
||||
|
||||
priv->dbusDaemonRunning = false;
|
||||
|
||||
if (priv->dbusVMStateIds)
|
||||
|
@ -207,6 +207,9 @@ struct _qemuDomainObjPrivate {
|
||||
/* counter for generating node names for qemu disks */
|
||||
unsigned long long nodenameindex;
|
||||
|
||||
/* counter for generating IDs of fdsets - only relevant during startup */
|
||||
unsigned int fdsetindex;
|
||||
|
||||
/* qemuProcessStartCPUs stores the reason for starting vCPUs here for the
|
||||
* RESUME event handler to use it */
|
||||
virDomainRunningReason runningReason;
|
||||
@ -969,6 +972,8 @@ char * qemuDomainGetManagedPRSocketPath(qemuDomainObjPrivate *priv);
|
||||
|
||||
bool qemuDomainDefHasManagedPR(virDomainObj *vm);
|
||||
|
||||
unsigned int qemuDomainFDSetIDNew(qemuDomainObjPrivate *priv);
|
||||
|
||||
virDomainEventResumedDetailType
|
||||
qemuDomainRunningReasonToResumeEvent(virDomainRunningReason reason);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user