[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