On Wed, Jul 12, 2017 at 02:56:50PM +0200, Jiri Denemark wrote: > Separated from qemuProcessUpdateAndVerifyCPU to handle updating of an > active guest CPU definition according to live data from QEMU. > > Signed-off-by: Jiri Denemark <[email protected]> > --- > src/qemu/qemu_process.c | 70 > +++++++++++++++++++++++++++++-------------------- > 1 file changed, 42 insertions(+), 28 deletions(-) > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > index ebd13057b..926c64197 100644 > --- a/src/qemu/qemu_process.c > +++ b/src/qemu/qemu_process.c > @@ -4011,17 +4011,53 @@ qemuProcessVerifyCPU(virDomainObjPtr vm, > > > static int > +qemuProcessUpdateLiveGuestCPU(virDomainObjPtr vm, > + virCPUDataPtr enabled, > + virCPUDataPtr disabled) > +{ > + virDomainDefPtr def = vm->def; > + qemuDomainObjPrivatePtr priv = vm->privateData; > + virCPUDefPtr orig = NULL; > + int rc; > + int ret = -1; > + > + if (!enabled || > + !def->cpu || > + (def->cpu->mode == VIR_CPU_MODE_CUSTOM && > + !def->cpu->model))
Now the condition is extended by another check, this makes the code
fragile. I would prefer separating the "!enabled".
> + return 0;
> +
> + if (!(orig = virCPUDefCopy(def->cpu)))
> + goto cleanup;
> +
> + if ((rc = virCPUUpdateLive(def->os.arch, def->cpu, enabled, disabled)) <
> 0) {
> + goto cleanup;
> + } else if (rc == 0) {
> + /* Store the original CPU in priv if QEMU changed it and we didn't
> + * get the original CPU via migration, restore, or snapshot revert.
> + */
> + if (!priv->origCPU && !virCPUDefIsEqual(def->cpu, orig, false))
> + VIR_STEAL_PTR(priv->origCPU, orig);
> +
> + def->cpu->check = VIR_CPU_CHECK_FULL;
> + }
> +
> + ret = 0;
> +
> + cleanup:
> + virCPUDefFree(orig);
> + return ret;
> +}
Reviewed-by: Pavel Hrdina <[email protected]>
signature.asc
Description: Digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
