Traditionally, we pass incoming migration URI on QEMU command line,
which has some drawbacks. Depending on the URI QEMU may initialize its
migration state immediately without giving us a chance to set any
additional migration parameters (this applies mainly for fd: URIs). For
some URIs the monitor may be completely blocked from the beginning until
migration is finished, which means we may be stuck in qmp_capabilities
command without being able to send any QMP commands.
QEMU solved this by introducing "defer" parameter for -incoming command
line option. This will tell QEMU to prepare for an incoming migration
while the actual incoming URI is sent using migrate-incoming QMP
command. Before calling this command we can normally talk to the
monitor and even set any migration parameters which will be honored by
the incoming migration.
Jiri Denemark (24):
qemu: Refactor waiting for completed migration on destination
qemu: Refactor the code to build -incoming command line
qemu: Don't generate migration URI in qemuBuildCommandLine
qemu: Move incoming URI code to qemu_migration
qemu: Introduce qemuProcessIncomingDef
qemu: Always set async job when starting a domain
qemu: Add APIs for migrate-incoming QMP command
qemu: Use -incoming defer for migrations
qemu: Rename stdin_{fd,path} in qemuProcessStart
qemu: Separate hook handling code from qemuProcessStart
qemu: Separate graphics handling code from qemuProcessStart
qemu: Separate raw IO code from qemuProcessStart
qemu: Enter monitor within qemuProcessSetLinkStates
qemu: Separate balloon code from qemuProcessStart
qemu: Introduce qemuProcessMakeDir
qemu: Do not infer flags from other qemuProcessStart arguments
qemu: Close logfd when closing monitor
qemu: Introduce qemuProcessInit
qemu: Introduce qemuProcessLaunch
qemu: Introduce qemuProcessFinish
qemu: Separate incoming URI generation from qemuMigrationPrepareAny
qemu: Kill QEMU process if Prepare phase fails
qemu: Skip starting NBD servers for offline migration
qemu: Use qemuProcessLaunch in migration Prepare phase
src/qemu/qemu_capabilities.c | 3 +
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 42 +-
src/qemu/qemu_command.h | 4 +-
src/qemu/qemu_domain.c | 3 +
src/qemu/qemu_domain.h | 1 +
src/qemu/qemu_driver.c | 74 ++-
src/qemu/qemu_migration.c | 357 +++++++----
src/qemu/qemu_migration.h | 11 +
src/qemu/qemu_monitor.c | 14 +
src/qemu/qemu_monitor.h | 3 +
src/qemu/qemu_monitor_json.c | 25 +
src/qemu/qemu_monitor_json.h | 5 +
src/qemu/qemu_process.c | 881 +++++++++++++++++----------
src/qemu/qemu_process.h | 41 +-
tests/qemucapabilitiesdata/caps_2.4.0-1.caps | 1 +
tests/qemuxml2argvtest.c | 16 +-
17 files changed, 969 insertions(+), 515 deletions(-)
--
2.6.3