mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu_conf: Use automatic memory management
Signed-off-by: Tim Wiederhake <twiederh@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
d115fe8d11
commit
4a46539d0a
@ -85,17 +85,6 @@ static int virQEMUConfigOnceInit(void)
|
|||||||
VIR_ONCE_GLOBAL_INIT(virQEMUConfig);
|
VIR_ONCE_GLOBAL_INIT(virQEMUConfig);
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
qemuDriverLock(virQEMUDriver *driver)
|
|
||||||
{
|
|
||||||
virMutexLock(&driver->lock);
|
|
||||||
}
|
|
||||||
static void
|
|
||||||
qemuDriverUnlock(virQEMUDriver *driver)
|
|
||||||
{
|
|
||||||
virMutexUnlock(&driver->lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef DEFAULT_LOADER_NVRAM
|
#ifndef DEFAULT_LOADER_NVRAM
|
||||||
# define DEFAULT_LOADER_NVRAM \
|
# define DEFAULT_LOADER_NVRAM \
|
||||||
"/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd:" \
|
"/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd:" \
|
||||||
@ -1279,11 +1268,9 @@ virQEMUDriverConfigSetDefaults(virQEMUDriverConfig *cfg)
|
|||||||
|
|
||||||
virQEMUDriverConfig *virQEMUDriverGetConfig(virQEMUDriver *driver)
|
virQEMUDriverConfig *virQEMUDriverGetConfig(virQEMUDriver *driver)
|
||||||
{
|
{
|
||||||
virQEMUDriverConfig *conf;
|
VIR_LOCK_GUARD lock = virLockGuardLock(&driver->lock);
|
||||||
qemuDriverLock(driver);
|
|
||||||
conf = virObjectRef(driver->config);
|
return virObjectRef(driver->config);
|
||||||
qemuDriverUnlock(driver);
|
|
||||||
return conf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainXMLOption *
|
virDomainXMLOption *
|
||||||
@ -1303,16 +1290,13 @@ virQEMUDriverCreateXMLConf(virQEMUDriver *driver,
|
|||||||
virCPUDef *
|
virCPUDef *
|
||||||
virQEMUDriverGetHostCPU(virQEMUDriver *driver)
|
virQEMUDriverGetHostCPU(virQEMUDriver *driver)
|
||||||
{
|
{
|
||||||
virCPUDef *hostcpu;
|
virCPUDef *hostcpu = NULL;
|
||||||
|
|
||||||
qemuDriverLock(driver);
|
|
||||||
|
|
||||||
|
VIR_WITH_MUTEX_LOCK_GUARD(&driver->lock) {
|
||||||
if (!driver->hostcpu)
|
if (!driver->hostcpu)
|
||||||
driver->hostcpu = virCPUProbeHost(virArchFromHost());
|
driver->hostcpu = virCPUProbeHost(virArchFromHost());
|
||||||
|
|
||||||
hostcpu = driver->hostcpu;
|
hostcpu = driver->hostcpu;
|
||||||
|
}
|
||||||
qemuDriverUnlock(driver);
|
|
||||||
|
|
||||||
if (hostcpu)
|
if (hostcpu)
|
||||||
virCPUDefRef(hostcpu);
|
virCPUDefRef(hostcpu);
|
||||||
@ -1391,30 +1375,25 @@ virCaps *virQEMUDriverCreateCapabilities(virQEMUDriver *driver)
|
|||||||
virCaps *virQEMUDriverGetCapabilities(virQEMUDriver *driver,
|
virCaps *virQEMUDriverGetCapabilities(virQEMUDriver *driver,
|
||||||
bool refresh)
|
bool refresh)
|
||||||
{
|
{
|
||||||
virCaps *ret = NULL;
|
|
||||||
if (refresh) {
|
if (refresh) {
|
||||||
virCaps *caps = NULL;
|
virCaps *caps = NULL;
|
||||||
if ((caps = virQEMUDriverCreateCapabilities(driver)) == NULL)
|
if ((caps = virQEMUDriverCreateCapabilities(driver)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
qemuDriverLock(driver);
|
VIR_WITH_MUTEX_LOCK_GUARD(&driver->lock) {
|
||||||
virObjectUnref(driver->caps);
|
virObjectUnref(driver->caps);
|
||||||
driver->caps = caps;
|
driver->caps = caps;
|
||||||
} else {
|
return virObjectRef(driver->caps);
|
||||||
qemuDriverLock(driver);
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (driver->caps == NULL ||
|
VIR_WITH_MUTEX_LOCK_GUARD(&driver->lock) {
|
||||||
driver->caps->nguests == 0) {
|
if (driver->caps && driver->caps->nguests > 0)
|
||||||
VIR_DEBUG("Capabilities didn't detect any guests. Forcing a "
|
return virObjectRef(driver->caps);
|
||||||
"refresh.");
|
}
|
||||||
qemuDriverUnlock(driver);
|
|
||||||
|
VIR_DEBUG("Capabilities didn't detect any guests. Forcing a refresh.");
|
||||||
return virQEMUDriverGetCapabilities(driver, true);
|
return virQEMUDriverGetCapabilities(driver, true);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = virObjectRef(driver->caps);
|
|
||||||
qemuDriverUnlock(driver);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user