[libvirt] [PATCH v2 00/23] qemu: Add support for new vcpu hotplug and unplug
John Ferlan
jferlan at redhat.com
Sat Aug 20 13:00:37 UTC 2016
On 08/19/2016 10:38 AM, Peter Krempa wrote:
> Version 2 attempts to address feedback on v1:
> - added more documentation
> - fixed various typos
> - fixed bugs appearing when restarting daemon
> - fixed fallback code
> - tested upgrade of libvirt
>
> Some of the patches were already pushed and this series is rebased on top
> of that changes.
>
> Patches 1-18 with exception of 16 were more or less ACKed already.
>
> I've dropped the last patch adding the events from this series. I'm working on
> adding a new event for vcpu lifecycle. I'm also working on reporting of the
> vcpu granularity via the domcapabilities API. I'm going to post those
> separately as well as the new API that will allow modifying the vcpus
> individually.
>
> Peter Krempa (23):
> qemu: monitor: Return structures from qemuMonitorGetCPUInfo
> qemu: monitor: Return struct from qemuMonitor(Text|Json)QueryCPUs
> qemu: caps: Add capability for query-hotpluggable-cpus command
> qemu: Forbid config when topology based cpu count doesn't match the
> config
> qemu: capabilities: Extract availability of new cpu hotplug for
> machine types
> qemu: monitor: Extract QOM path from query-cpus reply
> qemu: monitor: Add support for calling query-hotpluggable-cpus
> qemu: monitor: Add algorithm for combining query-(hotpluggable-)-cpus
> data
> tests: Add test infrastructure for qemuMonitorGetCPUInfo
> tests: cpu-hotplug: Add data for ppc64 platform including hotplug
> tests: cpu-hotplug: Add data for ppc64 out-of-order hotplug
> tests: cpu-hotplug: Add data for ppc64 without threads enabled
> qemu: domain: Extract cpu-hotplug related data
> qemu: domain: Prepare for VCPUs vanishing while libvirt is not running
> util: Extract and rename qemuDomainDelCgroupForThread to
> virCgroupDelThread
> conf: Add XML for individual vCPU hotplug
> qemu: migration: Prepare for non-contiguous vcpu configurations
> qemu: command: Add helper to convert vcpu definition to JSON props
> qemu: process: Copy final vcpu order information into the vcpu
> definition
> qemu: command: Add support for sparse vcpu topologies
> qemu: Use mondern vcpu hotplug approach if possible
> qemu: hotplug: Allow marking unplugged devices by alias
> qemu: hotplug: Add support for VCPU unplug
>
> docs/formatdomain.html.in | 40 +++
> docs/schemas/domaincommon.rng | 25 ++
> src/conf/domain_conf.c | 152 +++++++++-
> src/conf/domain_conf.h | 6 +
> src/libvirt_private.syms | 1 +
> src/qemu/qemu_capabilities.c | 31 +-
> src/qemu/qemu_capabilities.h | 3 +
> src/qemu/qemu_command.c | 50 +++-
> src/qemu/qemu_command.h | 3 +
> src/qemu/qemu_domain.c | 312 +++++++++++++++++----
> src/qemu/qemu_domain.h | 19 +-
> src/qemu/qemu_driver.c | 246 +++++++++-------
> src/qemu/qemu_hotplug.c | 124 +++++++-
> src/qemu/qemu_hotplug.h | 7 +
> src/qemu/qemu_migration.c | 16 +-
> src/qemu/qemu_monitor.c | 260 ++++++++++++++++-
> src/qemu/qemu_monitor.h | 58 +++-
> src/qemu/qemu_monitor_json.c | 266 +++++++++++++++---
> src/qemu/qemu_monitor_json.h | 8 +-
> src/qemu/qemu_monitor_text.c | 41 +--
> src/qemu/qemu_monitor_text.h | 3 +-
> src/qemu/qemu_process.c | 182 +++++++++++-
> src/util/vircgroup.c | 20 ++
> src/util/vircgroup.h | 4 +
> .../generic-vcpus-individual.xml | 23 ++
> tests/genericxml2xmltest.c | 2 +
> tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 55 ++--
> .../qemumonitorjson-cpuinfo-ppc64-basic-cpus.json | 77 +++++
> ...emumonitorjson-cpuinfo-ppc64-basic-hotplug.json | 27 ++
> .../qemumonitorjson-cpuinfo-ppc64-basic.data | 40 +++
> ...mumonitorjson-cpuinfo-ppc64-hotplug-1-cpus.json | 149 ++++++++++
> ...onitorjson-cpuinfo-ppc64-hotplug-1-hotplug.json | 28 ++
> .../qemumonitorjson-cpuinfo-ppc64-hotplug-1.data | 51 ++++
> ...mumonitorjson-cpuinfo-ppc64-hotplug-2-cpus.json | 221 +++++++++++++++
> ...onitorjson-cpuinfo-ppc64-hotplug-2-hotplug.json | 29 ++
> .../qemumonitorjson-cpuinfo-ppc64-hotplug-2.data | 62 ++++
> ...mumonitorjson-cpuinfo-ppc64-hotplug-4-cpus.json | 221 +++++++++++++++
> ...onitorjson-cpuinfo-ppc64-hotplug-4-hotplug.json | 29 ++
> .../qemumonitorjson-cpuinfo-ppc64-hotplug-4.data | 62 ++++
> ...umonitorjson-cpuinfo-ppc64-no-threads-cpus.json | 77 +++++
> ...nitorjson-cpuinfo-ppc64-no-threads-hotplug.json | 125 +++++++++
> .../qemumonitorjson-cpuinfo-ppc64-no-threads.data | 72 +++++
> ...nitorjson-cpuinfo-x86-basic-pluggable-cpus.json | 50 ++++
> ...orjson-cpuinfo-x86-basic-pluggable-hotplug.json | 82 ++++++
> ...emumonitorjson-cpuinfo-x86-basic-pluggable.data | 39 +++
> tests/qemumonitorjsontest.c | 183 +++++++++++-
> .../qemuxml2argv-cpu-hotplug-startup.args | 20 ++
> .../qemuxml2argv-cpu-hotplug-startup.xml | 29 ++
> tests/qemuxml2argvtest.c | 2 +
> tests/testutils.c | 4 +-
> 50 files changed, 3360 insertions(+), 276 deletions(-)
> create mode 100644 tests/genericxml2xmlindata/generic-vcpus-individual.xml
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-basic-cpus.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-basic-hotplug.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-basic.data
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-1-cpus.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-1-hotplug.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-1.data
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-2-cpus.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-2-hotplug.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-2.data
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-4-cpus.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-4-hotplug.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-4.data
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-no-threads-cpus.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-no-threads-hotplug.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-no-threads.data
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-basic-pluggable-cpus.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-basic-pluggable-hotplug.json
> create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-basic-pluggable.data
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-hotplug-startup.args
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-hotplug-startup.xml
>
Went through them all - made a few comments along the way (along with a
face palm one). Nothing major seen - although I think the rules for qemu
usage will certainly trip someone up! It's "too bad" some of those
architectural differences couldn't have been hidden by qemu.
ACK series -
John
More information about the libvir-list
mailing list