[libvirt] [PATCH] qemu: Fix emulator affinity
Osier Yang
jyang at redhat.com
Fri Oct 19 04:02:14 UTC 2012
On 2012年10月18日 21:51, Martin Kletzander wrote:
> Commit ba63d8f7d843461f77a8206c1ef9da38388713e5 introduced a bug that
> makes machines, that don't have either cpuset in<vcpu> or
> <emulatorpin> specified, fail. Because the function that sets
> affinity is called without any check, the function must not fail
> unless there is an error.
> ---
> src/qemu/qemu_process.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index e08ec67..b97aaef 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -2029,22 +2029,24 @@ static int
> qemuProcessSetEmulatorAffinites(virConnectPtr conn,
> virDomainObjPtr vm)
> {
> - virBitmapPtr cpumask;
> + virBitmapPtr cpumask = NULL;
> virDomainDefPtr def = vm->def;
> virNodeInfo nodeinfo;
> int ret = -1;
>
> - if (virNodeGetInfo(conn,&nodeinfo) != 0)
> - return -1;
> + if (virNodeGetInfo(conn,&nodeinfo)< 0)
> + goto cleanup;
It might be deserved to get rid of the "nodeinfo" together,
as it's not used. Another patch is fine though.
>
> if (def->cputune.emulatorpin)
> cpumask = def->cputune.emulatorpin->cpumask;
> else if (def->cpumask)
> cpumask = def->cpumask;
> +
> + if (cpumask)
> + ret = virProcessInfoSetAffinity(vm->pid, cpumask);
> else
> - goto cleanup;
> + ret = 0;
>
> - ret = virProcessInfoSetAffinity(vm->pid, cpumask);
> cleanup:
> return ret;
Personally I'd like get rid of the cleanup. As it doesn't do
any cleanup work, waste of goto. :-)
Regards,
Osier
More information about the libvir-list
mailing list