Hi all! The series brings an option to not immediately exit on incoming migration failure, giving a possibility to orchestrator to get the error through QAPI and shutdown QEMU by "quit".
v5: - add "migration: process_incoming_migration_co(): fix reporting s->error" v4: - add r-b and a-b by Fabiano and Markus - improve wording in 04 as Markus suggested v3: - don't refactor the whole code around setting migration error, it seems too much and necessary for the new feature itself - add constant - change behavior for HMP command - split some things to separate patches - and more, by Peter's suggestions New behavior can be demonstrated like this: bash: ( cat <<EOF {'execute': 'qmp_capabilities'} {'execute': 'migrate-set-capabilities', 'arguments': {'capabilities': [{'capability': 'events', 'state': true}]}} {'execute': 'migrate-incoming', 'arguments': {'uri': 'exec:echo x', 'exit-on-error': false}} EOF sleep 1 cat <<EOF {'execute': 'query-migrate'} {'execute': 'quit'} EOF ) | ./build/qemu-system-x86_64 -incoming 'defer' -qmp stdio -nographic -nodefaults output: {"QMP": {"version": {"qemu": {"micro": 50, "minor": 0, "major": 9}, "package": "v9.0.0-149-gb6295ad58c"}, "capabilities": ["oob"]}} {"return": {}} {"return": {}} {"timestamp": {"seconds": 1714068847, "microseconds": 263907}, "event": "MIGRATION", "data": {"status": "setup"}} {"return": {}} {"timestamp": {"seconds": 1714068847, "microseconds": 266696}, "event": "MIGRATION", "data": {"status": "active"}} qemu-system-x86_64: Not a migration stream {"timestamp": {"seconds": 1714068847, "microseconds": 266766}, "event": "MIGRATION", "data": {"status": "failed"}} {"return": {"status": "failed", "error-desc": "load of migration failed: Invalid argument"}} {"timestamp": {"seconds": 1714068848, "microseconds": 237187}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} {"return": {}} Vladimir Sementsov-Ogievskiy (5): migration: move trace-point from migrate_fd_error to migrate_set_error migration: process_incoming_migration_co(): complete cleanup on failure migration: process_incoming_migration_co(): fix reporting s->error migration: process_incoming_migration_co(): rework error reporting qapi: introduce exit-on-error parameter for migrate-incoming migration/migration-hmp-cmds.c | 2 +- migration/migration.c | 76 +++++++++++++++++++++++----------- migration/migration.h | 3 ++ migration/trace-events | 2 +- qapi/migration.json | 7 +++- system/vl.c | 3 +- 6 files changed, 64 insertions(+), 29 deletions(-) -- 2.34.1