mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu_process.c: modernize qemuProcessUpdateCPU code path
Use automatic cleanup on qemuProcessUpdateCPU and the functions called by it. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Message-Id: <20200522195620.3843442-5-danielhb413@gmail.com> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
a0ba662382
commit
f600c42627
@ -4187,8 +4187,8 @@ qemuProcessFetchGuestCPU(virQEMUDriverPtr driver,
|
|||||||
virCPUDataPtr *disabled)
|
virCPUDataPtr *disabled)
|
||||||
{
|
{
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
virCPUDataPtr dataEnabled = NULL;
|
g_autoptr(virCPUData) dataEnabled = NULL;
|
||||||
virCPUDataPtr dataDisabled = NULL;
|
g_autoptr(virCPUData) dataDisabled = NULL;
|
||||||
bool generic;
|
bool generic;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -4201,7 +4201,7 @@ qemuProcessFetchGuestCPU(virQEMUDriverPtr driver,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
|
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
|
||||||
goto error;
|
return -1;
|
||||||
|
|
||||||
if (generic) {
|
if (generic) {
|
||||||
rc = qemuMonitorGetGuestCPU(priv->mon,
|
rc = qemuMonitorGetGuestCPU(priv->mon,
|
||||||
@ -4213,19 +4213,14 @@ qemuProcessFetchGuestCPU(virQEMUDriverPtr driver,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (qemuDomainObjExitMonitor(driver, vm) < 0)
|
if (qemuDomainObjExitMonitor(driver, vm) < 0)
|
||||||
goto error;
|
return -1;
|
||||||
|
|
||||||
if (rc == -1)
|
if (rc == -1)
|
||||||
goto error;
|
return -1;
|
||||||
|
|
||||||
*enabled = dataEnabled;
|
*enabled = g_steal_pointer(&dataEnabled);
|
||||||
*disabled = dataDisabled;
|
*disabled = g_steal_pointer(&dataDisabled);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
|
||||||
virCPUDataFree(dataEnabled);
|
|
||||||
virCPUDataFree(dataDisabled);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4261,9 +4256,8 @@ qemuProcessUpdateLiveGuestCPU(virDomainObjPtr vm,
|
|||||||
{
|
{
|
||||||
virDomainDefPtr def = vm->def;
|
virDomainDefPtr def = vm->def;
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
virCPUDefPtr orig = NULL;
|
g_autoptr(virCPUDef) orig = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
if (!enabled)
|
if (!enabled)
|
||||||
return 0;
|
return 0;
|
||||||
@ -4274,10 +4268,10 @@ qemuProcessUpdateLiveGuestCPU(virDomainObjPtr vm,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!(orig = virCPUDefCopy(def->cpu)))
|
if (!(orig = virCPUDefCopy(def->cpu)))
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
if ((rc = virCPUUpdateLive(def->os.arch, def->cpu, enabled, disabled)) < 0) {
|
if ((rc = virCPUUpdateLive(def->os.arch, def->cpu, enabled, disabled)) < 0) {
|
||||||
goto cleanup;
|
return -1;
|
||||||
} else if (rc == 0) {
|
} else if (rc == 0) {
|
||||||
/* Store the original CPU in priv if QEMU changed it and we didn't
|
/* Store the original CPU in priv if QEMU changed it and we didn't
|
||||||
* get the original CPU via migration, restore, or snapshot revert.
|
* get the original CPU via migration, restore, or snapshot revert.
|
||||||
@ -4288,11 +4282,7 @@ qemuProcessUpdateLiveGuestCPU(virDomainObjPtr vm,
|
|||||||
def->cpu->check = VIR_CPU_CHECK_FULL;
|
def->cpu->check = VIR_CPU_CHECK_FULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
return 0;
|
||||||
|
|
||||||
cleanup:
|
|
||||||
virCPUDefFree(orig);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4351,10 +4341,9 @@ qemuProcessUpdateCPU(virQEMUDriverPtr driver,
|
|||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
qemuDomainAsyncJob asyncJob)
|
qemuDomainAsyncJob asyncJob)
|
||||||
{
|
{
|
||||||
virCPUDataPtr cpu = NULL;
|
g_autoptr(virCPUData) cpu = NULL;
|
||||||
virCPUDataPtr disabled = NULL;
|
g_autoptr(virCPUData) disabled = NULL;
|
||||||
g_autoptr(virDomainCapsCPUModels) models = NULL;
|
g_autoptr(virDomainCapsCPUModels) models = NULL;
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
/* The host CPU model comes from host caps rather than QEMU caps so
|
/* The host CPU model comes from host caps rather than QEMU caps so
|
||||||
* fallback must be allowed no matter what the user specified in the XML.
|
* fallback must be allowed no matter what the user specified in the XML.
|
||||||
@ -4362,21 +4351,16 @@ qemuProcessUpdateCPU(virQEMUDriverPtr driver,
|
|||||||
vm->def->cpu->fallback = VIR_CPU_FALLBACK_ALLOW;
|
vm->def->cpu->fallback = VIR_CPU_FALLBACK_ALLOW;
|
||||||
|
|
||||||
if (qemuProcessFetchGuestCPU(driver, vm, asyncJob, &cpu, &disabled) < 0)
|
if (qemuProcessFetchGuestCPU(driver, vm, asyncJob, &cpu, &disabled) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
if (qemuProcessUpdateLiveGuestCPU(vm, cpu, disabled) < 0)
|
if (qemuProcessUpdateLiveGuestCPU(vm, cpu, disabled) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
if (qemuProcessFetchCPUDefinitions(driver, vm, asyncJob, &models) < 0 ||
|
if (qemuProcessFetchCPUDefinitions(driver, vm, asyncJob, &models) < 0 ||
|
||||||
virCPUTranslate(vm->def->os.arch, vm->def->cpu, models) < 0)
|
virCPUTranslate(vm->def->os.arch, vm->def->cpu, models) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
ret = 0;
|
return 0;
|
||||||
|
|
||||||
cleanup:
|
|
||||||
virCPUDataFree(cpu);
|
|
||||||
virCPUDataFree(disabled);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user