This series changes the way we handle migration parameters and
capabilities with several goals:
- make it all consistent and avoid storing the same parameters in
several structs
- reduce the number of QMP commands we use for setting migration
capabilities
- concentrate the logic in a separate file and make the code for
migration parameters and capabilities in qemu_migration.c less
complicated
- reset all parameters and capabilities at the end of migration
- make adding new parameters and capabilities easier
Version 2:
- qemuDomainCheckMigrationCapabilities is moved to
qemu_migration_params.c (rather than to qemu_migration.c)
- supported migration capabilities are sent via migration cookie so that
some caps may be automatically enabled only when both sides support
them
Jiri Denemark (73):
qemu: Rename qemuMigrationAnyCapsGet as qemuMigrationCapsGet
qemu: Rename qemuMigrationParams
qemu: New file for all APIs related to migration parameters
qemu: Move qemuDomainCheckMigrationCapabilities
qemu: Move qemuMigrationCapsGet
qemu: Reindent qemuMigrationParamsSetEmptyTLS
qemu: Make qemuMigrationParamsFree follow common pattern
qemu: Allocate struct for migration parameters
qemu: Drop qemuMigrationParamsClear
qemu: Move qemuMigrationCompression struct
qemu: Introduce qemuMigrationParams struct
qemu: Reset migration parameters in qemuMigrationSrcCleanup
qemu: Store original migration params in job
qemu: Typedef struct qemuDomainJobObj
qemu: Pass job object to qemuProcessRecoverMigration{In,Out}
qemu: Reset all migration parameters
qemu: Drop qemuMigrationParamsCheckSetupTLS
qemu: Drop qemuMigrationParamsCheckTLSCreds
qemu: Rename qemuMigrationParamsSetEmptyTLS
qemu: Rename qemuMigrationParamsAddTLSObjects
qemu: Set tlsHostname inside qemuMigrationParamsEnableTLS
qemu: Hide cfg inside qemuMigrationParamsEnableTLS
qemu: Rename qemuMigrationParamsSet
qemu: Hide internals of qemuMigrationParams struct
qemu: Introduce qemuMonitorSetMigrationCapabilities
qemu: Set migration caps via migration params APIs
qemu: Do not use qemuMonitorSetMigrationCapability
qemu: Drop unused qemuMonitorSetMigrationCapability
qemu: Add support for xbzrle-cache-size migration parameter
qemu: Set XBZRLE cache size via migration parameters
qemu: Move ParamsCheck closer to ParamsApply on Dst side
qemu: Move ParamsCheck closer to ParamsApply on Src side
qemu: Check supported caps in qemuMigrationParamsCheck
qemu: Introduce qemuMigrationParty enum
qemu: Use qemuMigrationParamsFromFlags everywhere
qemu: Hide qemuMigrationParamsNew
qemu: Drop qemuMigrationParamsSetPostCopy
qemu: Set always-on migration caps in ParamsCheck
qemu: Set migration capabilities automatically
qemu: Call qemuMigrationAnyCompressionParse only from driver
qemu: Generalize macro for getting VIR_MIGRATE_* typed params
qemu: Drop qemuMigrationParamsSetCapability
qemu: Move qemuMigrationParamsSetCompression
qemu: Move qemuMigrationAnyCompression*
qemu: Hide qemuMigrationParamsSetCompression
qemu: Replace qemuMigrationAnyCompressionDump
qemu: Drop qemuMigrationCompression structure
qemu: Introduce qemuMigrationParamsFetch
qemu: Limit usage of qemuMonitorMigrationParams
qemumonitorjsontest: Drop migration params test
util: Introduce virJSONValueObjectStealObject
qemu: Move migration parameters JSON parsing
qemu: Move migration parameters JSON formatting
qemu: Export qemuMigrationParams{To,From}JSON for tests
qemu: Move qemuMonitorMigrationParams structure
qemu: Refactor qemuMigrationParams
qemu: Move migration capabilities JSON formatting
qemu: Move qemuMonitorMigrationCaps enum
qemu: Add support for sending capabilities in migration cookie
qemu: Check remote caps when enabling always-on capabilities
qemu: Generalize qemuMigrationParamsGetDowntimeLimit
qemu: Set migration parameters automatically
qemu: Properly reset migration params when libvirtd restarts
tests: Add tests for QEMU migration parameters
qemumigparamstest: Add basic test data
qemumigparamstest: Add test data for TLS parameters
qemu: Store API flags for async jobs in qemuDomainJobObj
qemu: Properly avoid cancelling memory-only dump
qemu: Drop priv->job.dump_memory_only bool
qemu: Drop priv->job.postcopyEnabled bool
qemu: Store API flags for async jobs in status XML
qemu: Don't delete TLS objects unless TLS migration was requested
qemuxml2xmltest: Add status XML tests for migration params
po/POTFILES.in | 1 +
src/libvirt_private.syms | 1 +
src/qemu/Makefile.inc.am | 3 +
src/qemu/qemu_domain.c | 110 +-
src/qemu/qemu_domain.h | 25 +-
src/qemu/qemu_driver.c | 175 ++-
src/qemu/qemu_migration.c | 926 ++---------
src/qemu/qemu_migration.h | 66 +-
src/qemu/qemu_migration_cookie.c | 136 +-
src/qemu/qemu_migration_cookie.h | 15 +
src/qemu/qemu_migration_params.c | 1351 +++++++++++++++++
src/qemu/qemu_migration_params.h | 156 ++
src/qemu/qemu_migration_paramspriv.h | 35 +
src/qemu/qemu_monitor.c | 76 +-
src/qemu/qemu_monitor.h | 56 +-
src/qemu/qemu_monitor_json.c | 133 +-
src/qemu/qemu_monitor_json.h | 9 +-
src/qemu/qemu_process.c | 30 +-
src/qemu/qemu_process.h | 3 +-
src/util/virjson.c | 8 +
src/util/virjson.h | 2 +
tests/Makefile.am | 12 +
tests/qemumigparamsdata/basic.json | 9 +
tests/qemumigparamsdata/basic.reply | 12 +
tests/qemumigparamsdata/basic.xml | 11 +
tests/qemumigparamsdata/empty.json | 3 +
tests/qemumigparamsdata/empty.reply | 5 +
tests/qemumigparamsdata/empty.xml | 4 +
tests/qemumigparamsdata/tls-enabled.json | 11 +
tests/qemumigparamsdata/tls-enabled.reply | 14 +
tests/qemumigparamsdata/tls-enabled.xml | 13 +
tests/qemumigparamsdata/tls-hostname.json | 11 +
tests/qemumigparamsdata/tls-hostname.reply | 14 +
tests/qemumigparamsdata/tls-hostname.xml | 13 +
tests/qemumigparamsdata/tls.json | 11 +
tests/qemumigparamsdata/tls.reply | 14 +
tests/qemumigparamsdata/tls.xml | 13 +
tests/qemumigparamsdata/unsupported.json | 3 +
tests/qemumigparamsdata/unsupported.reply | 7 +
tests/qemumigparamsdata/unsupported.xml | 4 +
tests/qemumigparamstest.c | 242 +++
tests/qemumonitorjsontest.c | 123 +-
.../migration-in-params-in.xml | 400 +++++
.../migration-in-params-out.xml | 1 +
.../migration-out-nbd-out.xml | 450 +++++-
.../migration-out-params-in.xml | 414 +++++
.../migration-out-params-out.xml | 1 +
tests/qemuxml2xmltest.c | 2 +
48 files changed, 3766 insertions(+), 1368 deletions(-)
create mode 100644 src/qemu/qemu_migration_params.c
create mode 100644 src/qemu/qemu_migration_params.h
create mode 100644 src/qemu/qemu_migration_paramspriv.h
create mode 100644 tests/qemumigparamsdata/basic.json
create mode 100644 tests/qemumigparamsdata/basic.reply
create mode 100644 tests/qemumigparamsdata/basic.xml
create mode 100644 tests/qemumigparamsdata/empty.json
create mode 100644 tests/qemumigparamsdata/empty.reply
create mode 100644 tests/qemumigparamsdata/empty.xml
create mode 100644 tests/qemumigparamsdata/tls-enabled.json
create mode 100644 tests/qemumigparamsdata/tls-enabled.reply
create mode 100644 tests/qemumigparamsdata/tls-enabled.xml
create mode 100644 tests/qemumigparamsdata/tls-hostname.json
create mode 100644 tests/qemumigparamsdata/tls-hostname.reply
create mode 100644 tests/qemumigparamsdata/tls-hostname.xml
create mode 100644 tests/qemumigparamsdata/tls.json
create mode 100644 tests/qemumigparamsdata/tls.reply
create mode 100644 tests/qemumigparamsdata/tls.xml
create mode 100644 tests/qemumigparamsdata/unsupported.json
create mode 100644 tests/qemumigparamsdata/unsupported.reply
create mode 100644 tests/qemumigparamsdata/unsupported.xml
create mode 100644 tests/qemumigparamstest.c
create mode 100644 tests/qemustatusxml2xmldata/migration-in-params-in.xml
create mode 120000 tests/qemustatusxml2xmldata/migration-in-params-out.xml
mode change 120000 => 100644 tests/qemustatusxml2xmldata/migration-out-nbd-out.xml
create mode 100644 tests/qemustatusxml2xmldata/migration-out-params-in.xml
create mode 120000 tests/qemustatusxml2xmldata/migration-out-params-out.xml
--
2.17.0