mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: directly create virResctrlInfo ignoring capabilities
We always refresh the capabilities object when using virResctrlInfo during process startup. This is undesirable overhead, because we can just directly create a virResctrlInfo instead. Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
adf009b48f
commit
7be5fe66cd
@ -2724,29 +2724,24 @@ qemuProcessSetupEmulator(virDomainObjPtr vm)
|
||||
|
||||
|
||||
static int
|
||||
qemuProcessResctrlCreate(virQEMUDriverPtr driver,
|
||||
virDomainObjPtr vm)
|
||||
qemuProcessResctrlCreate(virDomainObjPtr vm)
|
||||
{
|
||||
int ret = -1;
|
||||
size_t i = 0;
|
||||
virCapsPtr caps = NULL;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
g_autoptr(virResctrlInfo) resctrl = NULL;
|
||||
|
||||
if (!vm->def->nresctrls)
|
||||
return 0;
|
||||
|
||||
/* Force capability refresh since resctrl info can change
|
||||
* XXX: move cache info into virresctrl so caps are not needed */
|
||||
caps = virQEMUDriverGetCapabilities(driver, true);
|
||||
if (!caps)
|
||||
if (!(resctrl = virResctrlInfoNew()))
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < vm->def->nresctrls; i++) {
|
||||
size_t j = 0;
|
||||
if (virResctrlAllocCreate(caps->host.resctrl,
|
||||
if (virResctrlAllocCreate(resctrl,
|
||||
vm->def->resctrls[i]->alloc,
|
||||
priv->machineName) < 0)
|
||||
goto cleanup;
|
||||
return -1;
|
||||
|
||||
for (j = 0; j < vm->def->resctrls[i]->nmonitors; j++) {
|
||||
virDomainResctrlMonDefPtr mon = NULL;
|
||||
@ -2754,14 +2749,11 @@ qemuProcessResctrlCreate(virQEMUDriverPtr driver,
|
||||
mon = vm->def->resctrls[i]->monitors[j];
|
||||
if (virResctrlMonitorCreate(mon->instance,
|
||||
priv->machineName) < 0)
|
||||
goto cleanup;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
virObjectUnref(caps);
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -6882,7 +6874,7 @@ qemuProcessLaunch(virConnectPtr conn,
|
||||
goto cleanup;
|
||||
|
||||
VIR_DEBUG("Setting up resctrl");
|
||||
if (qemuProcessResctrlCreate(driver, vm) < 0)
|
||||
if (qemuProcessResctrlCreate(vm) < 0)
|
||||
goto cleanup;
|
||||
|
||||
VIR_DEBUG("Setting up managed PR daemon");
|
||||
|
@ -100,6 +100,8 @@ typedef virResctrlInfo *virResctrlInfoPtr;
|
||||
virResctrlInfoPtr
|
||||
virResctrlInfoNew(void);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virResctrlInfo, virObjectUnref);
|
||||
|
||||
int
|
||||
virResctrlInfoGetCache(virResctrlInfoPtr resctrl,
|
||||
unsigned int level,
|
||||
|
Loading…
x
Reference in New Issue
Block a user