[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