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