v1: http://www.redhat.com/archives/libvir-list/2015-March/msg01014.html v2 is mostly a completely rewrite of v1 - only smart parts were kept, mostly the "concepts" behind adding/removing a thread Patches 1&2: Couple of simple mods - mostly innocuous Patches 3-5 Since it was determined that just setting the IOThread count and keeping sequential IOThread ID's may not be a desired means to add/remove threads, I decided upon a mechanism which to a degree follows the tune/pin mechanism. Rework the existing IOThread logic to make use of a new domain XML element <iothreadids> which will list each of the <iothread>'s with attributes "id" (required) and "name" (optional). The "id" allows one to generate their own ID number/naming mechanism. If <iothreadids> is not found in the XML, then internally will generate the data structures that support it - IOThreadID's. Work the IOThreadID logic into the "live" iothreadpid lists (or now arrays) to manage the live IOThread data Patches 6-7 Add the API/plumbing for two new API's - virDomainAddIOThread and virDomainDelIOThread to complement the existing virDomainPinIOThread. The "Add" API will take two parameters - an iothread_id and an optional "name". The "Del" API will take just one parameter - the iothread_id Patch 8-9 Implement the qemu backend and virsh front end to manage IOThreads either live or just the config file. I did leave some // comments in Patch 8 as a way to ask a reviewer their thoughts in the add live error path whether 'extra' cleanup should be done or just ignored. Those would be cleaned up and removed for the final version. John Ferlan (9): Rename qemuCheckIothreads to qemuCheckIOThreads Convert virDomainPinIsDuplicate into bool return conf: Add new domain XML element 'iothreadids' qemu: Convert iothreadpids into an array of structures qemu: Use domain iothreadids to populate iothreadpids Implement virDomainAddIOThread and virDomainDelIOThread remote: Add support for AddIOThread and DelIOThread qemu: Add support to Add/Delete IOThreads virsh: Add iothreadadd and iothreaddel commands docs/formatdomain.html.in | 28 ++ docs/schemas/domaincommon.rng | 17 + include/libvirt/libvirt-domain.h | 7 + src/conf/domain_audit.c | 9 + src/conf/domain_audit.h | 6 + src/conf/domain_conf.c | 253 ++++++++++- src/conf/domain_conf.h | 29 +- src/driver-hypervisor.h | 13 + src/libvirt-domain.c | 132 ++++++ src/libvirt_private.syms | 7 + src/libvirt_public.syms | 6 + src/qemu/qemu_cgroup.c | 16 +- src/qemu/qemu_command.c | 108 ++++- src/qemu/qemu_command.h | 4 + src/qemu/qemu_domain.c | 55 ++- src/qemu/qemu_domain.h | 12 +- src/qemu/qemu_driver.c | 467 ++++++++++++++++++++- src/qemu/qemu_process.c | 32 +- src/remote/remote_driver.c | 2 + src/remote/remote_protocol.x | 31 +- src/remote_protocol-structs | 13 + .../qemuxml2argv-iothreads-ids-partial.args | 10 + .../qemuxml2argv-iothreads-ids-partial.xml | 33 ++ .../qemuxml2argv-iothreads-ids.args | 8 + .../qemuxml2argv-iothreads-ids.xml | 33 ++ .../qemuxml2argv-iothreads-name.args | 17 + .../qemuxml2argv-iothreads-name.xml | 44 ++ tests/qemuxml2argvtest.c | 4 + tests/qemuxml2xmltest.c | 3 + tools/virsh-domain.c | 174 ++++++++ tools/virsh.pod | 32 ++ 31 files changed, 1546 insertions(+), 59 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-iothreads-ids-partial.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-iothreads-ids-partial.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-iothreads-ids.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-iothreads-ids.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-iothreads-name.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-iothreads-name.xml -- 2.1.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list