mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-30 09:53:10 +00:00
qemu: stop creating capabilities at driver startup
Now that nearly all internal APIs use the QEMU capabilities or other QEMU driver data directly, there's no compelling benefit to create virCapsPtr at driver startup. Skipping this means we don't probe capabilities for all 30 system emulator targets at startup, only those emulators which are referenced by an XML doc. This massively improves libvirtd startup time when the capabilities cache is not populated. It even improves startup time when the cache is up to date, as we don't bother to load files from the cache until we need them. Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
7be5fe66cd
commit
3dd91af01f
@ -1318,14 +1318,15 @@ virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
|
|||||||
driver->caps = caps;
|
driver->caps = caps;
|
||||||
} else {
|
} else {
|
||||||
qemuDriverLock(driver);
|
qemuDriverLock(driver);
|
||||||
}
|
|
||||||
|
|
||||||
if (driver->caps->nguests == 0 && !refresh) {
|
if (driver->caps == NULL ||
|
||||||
|
driver->caps->nguests == 0) {
|
||||||
VIR_DEBUG("Capabilities didn't detect any guests. Forcing a "
|
VIR_DEBUG("Capabilities didn't detect any guests. Forcing a "
|
||||||
"refresh.");
|
"refresh.");
|
||||||
qemuDriverUnlock(driver);
|
qemuDriverUnlock(driver);
|
||||||
return virQEMUDriverGetCapabilities(driver, true);
|
return virQEMUDriverGetCapabilities(driver, true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ret = virObjectRef(driver->caps);
|
ret = virObjectRef(driver->caps);
|
||||||
qemuDriverUnlock(driver);
|
qemuDriverUnlock(driver);
|
||||||
|
@ -907,9 +907,6 @@ qemuStateInitialize(bool privileged,
|
|||||||
if (!qemu_driver->qemuCapsCache)
|
if (!qemu_driver->qemuCapsCache)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if ((qemu_driver->caps = virQEMUDriverCreateCapabilities(qemu_driver)) == NULL)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (!(sec_managers = qemuSecurityGetNested(qemu_driver->securityManager)))
|
if (!(sec_managers = qemuSecurityGetNested(qemu_driver->securityManager)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user