On 12.04.2018 17:52, John Ferlan wrote:
On 04/04/2018 10:45 AM, Viktor Mihajlovski wrote:
> Use query-cpus-fast instead of query-cpus if supported by QEMU.
> Based on the QEMU_CAPS_QUERY_CPUS_FAST capability.
>
> Signed-off-by: Viktor Mihajlovski <mihajlov(a)linux.vnet.ibm.com>
> ---
> src/qemu/qemu_domain.c | 14 +++++++++++---
> src/qemu/qemu_monitor.c | 30 ++++++++++++++++++------------
> src/qemu/qemu_monitor.h | 7 +++++--
> src/qemu/qemu_monitor_json.c | 37 +++++++++++++++++++++++++++----------
> src/qemu/qemu_monitor_json.h | 3 ++-
> tests/qemumonitorjsontest.c | 4 ++--
> 6 files changed, 65 insertions(+), 30 deletions(-)
>
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 9d1c33b..662937b 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -9006,7 +9006,12 @@ qemuDomainRefreshVcpuInfo(virQEMUDriverPtr driver,
> if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
> return -1;
>
Count me as one of those that would prefer to see:
bool fast;
...
fast = virQEMUCapsGet(QEMU_DOMAIN_PRIVATE(vm)->qemuCaps,
QEMU_CAPS_QUERY_CPUS_FAST);
...
> - rc = qemuMonitorGetCPUInfo(qemuDomainGetMonitor(vm), &info, maxvcpus,
hotplug);
> + rc = qemuMonitorGetCPUInfo(qemuDomainGetMonitor(vm),
> + &info,
> + maxvcpus,
> + hotplug,
> + virQEMUCapsGet(QEMU_DOMAIN_PRIVATE(vm)->qemuCaps,
> + QEMU_CAPS_QUERY_CPUS_FAST));
rc = qemuMonitorGetCPUInfo(qemuDomainGetMonitor(vm), &info, maxvcpus,
hotplug, fast);
>>
> if (qemuDomainObjExitMonitor(driver, vm) < 0)
> goto cleanup;
> @@ -9025,7 +9030,7 @@ qemuDomainRefreshVcpuInfo(virQEMUDriverPtr driver,
> * thread, but it runs every vCPU in that same thread. So it
> * is impossible to setup different affinity per thread.
> *
> - * What's more the 'query-cpus' command returns bizarre
> + * What's more the 'query-cpus[-fast]' command returns bizarre
> * data for the threads. It gives the TCG thread for the
> * vCPU 0, but for vCPUs 1-> N, it actually replies with
> * the main process thread ID.
> @@ -9126,7 +9131,10 @@ qemuDomainRefreshVcpuHalted(virQEMUDriverPtr driver,
> if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
> return -1;
>
> - haltedmap = qemuMonitorGetCpuHalted(qemuDomainGetMonitor(vm), maxvcpus);
> + haltedmap = qemuMonitorGetCpuHalted(qemuDomainGetMonitor(vm),
> + maxvcpus,
> +
virQEMUCapsGet(QEMU_DOMAIN_PRIVATE(vm)->qemuCaps,
> + QEMU_CAPS_QUERY_CPUS_FAST));
Likewise,
bool fast;
...
fast = virQEMUCapsGet(QEMU_DOMAIN_PRIVATE(vm)->qemuCaps,
QEMU_CAPS_QUERY_CPUS_FAST);
haltedmap = qemuMonitorGetCpuHalted(qemuDomainGetMonitor(vm), maxvcpus,
fast);
>
> if (qemuDomainObjExitMonitor(driver, vm) < 0 || !haltedmap)
> goto cleanup;
[...]
John
If you're OK with this I can make the alterations... What you have
works - it's just one of those preferential things related to seeing
and/or relying on function calls within function calls.
Sure. On another day I might have used a local variable as well.
Appreciating and accepting your offer to squash in this changes.
--
Regards,
Viktor Mihajlovski