[libvirt] [PATCH 0/7] Add more options for IOThreads
John Ferlan
jferlan at redhat.com
Mon Sep 15 17:27:51 UTC 2014
On 09/03/2014 12:15 PM, John Ferlan wrote:
<...snip...>
> John Ferlan (7):
> virsh: Add iothread to 'attach-disk'
> qemu: Issue query-iothreads and to get list of active IOThreads
> vircgroup: Introduce virCgroupNewIOThread
> qemu_domain: Add niothreadpids and iothreadpids
> qemu_cgroup: Introduce cgroup functions for IOThreads
> qemu: Allow pinning specific IOThreads to a CPU
> domain_conf: Add iothreadpin to cputune
>
> docs/formatdomain.html.in | 18 +++
> docs/schemas/domaincommon.rng | 10 ++
> src/conf/domain_conf.c | 124 +++++++++++++++++++--
> src/conf/domain_conf.h | 2 +
> src/libvirt_private.syms | 1 +
> src/qemu/qemu_cgroup.c | 104 +++++++++++++++++
> src/qemu/qemu_cgroup.h | 5 +
> src/qemu/qemu_domain.c | 36 ++++++
> src/qemu/qemu_domain.h | 3 +
> src/qemu/qemu_driver.c | 8 ++
> src/qemu/qemu_monitor.c | 41 +++++++
> src/qemu/qemu_monitor.h | 12 ++
> src/qemu/qemu_monitor_json.c | 91 +++++++++++++++
> src/qemu/qemu_monitor_json.h | 4 +
> src/qemu/qemu_process.c | 96 ++++++++++++++++
> src/util/vircgroup.c | 43 +++++++
> src/util/vircgroup.h | 6 +
> tests/qemumonitorjsontest.c | 71 ++++++++++++
> .../qemuxml2argv-cputune-iothreads.xml | 38 +++++++
> tests/qemuxml2xmltest.c | 1 +
> tools/virsh-domain.c | 13 ++-
> tools/virsh.pod | 5 +-
> 22 files changed, 717 insertions(+), 15 deletions(-)
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cputune-iothreads.xml
>
Thanks for the reviews - along with the VIR_FREE(tmp) in 7,
I also squashed and pushed the following into patch 6 & 7 respectively
due to a dogfooding experiment with my Coverity scan
John
Patch 6: (would have been a NEGATIVE_RETURNS due niothreads)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index cd1b431..6c412db 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -2131,9 +2131,11 @@ qemuProcessDetectIOThreadPIDs(virQEMUDriverPtr driver,
ret = 0;
cleanup:
- for (i = 0; i < niothreads; i++)
- qemuMonitorIOThreadsInfoFree(iothreads[i]);
- VIR_FREE(iothreads);
+ if (iothreads) {
+ for (i = 0; i < niothreads; i++)
+ qemuMonitorIOThreadsInfoFree(iothreads[i]);
+ VIR_FREE(iothreads);
+ }
return ret;
}
Patch 7: (iothreadid was uninitialized if tmp was NULL)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index bb09720..9cb3ebd 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -11513,9 +11513,8 @@ virDomainVcpuPinDefParseXML(xmlNodePtr node,
def->vcpuid = vcpuid;
}
- if (iothreads) {
- tmp = virXPathString("string(./@iothread)", ctxt);
- if (tmp && virStrToLong_uip(tmp, NULL, 10, &iothreadid) < 0) {
+ if (iothreads && (tmp = virXPathString("string(./@iothread)", ctxt))) {
+ if (virStrToLong_uip(tmp, NULL, 10, &iothreadid) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("invalid setting for iothread '%s'"), tmp);
goto error;
More information about the libvir-list
mailing list