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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list