Hi, This series adds an UUID validation at the start of the migration on the target side. The idea is to identify the source of migration.
Possible case of problem: 1. There are 3 servers: A, B and C 2. Server A has a VM 1, server B has a VM 2 3. VM 1 and VM 2 want to migrate to the server C 4. Target of VM 1 starts on the server C and dies too quickly for some reason 5. Target of VM 2 starts just after that and listen the same tcp port X, which the target of VM 1 wanted to use 6. Source of VM 1 connects to the tcp port X, and migrates to VM 2 source 7. It's possible that migration might be successful (e.g., devices are the same) 8. So, the target of VM 2 is in undefined state The series adds a capability to prevent successful (by mistake) migration. The new capability x-validate-uuid only affects the source so that it sends its UUID to the target. The target will validate the received UUID and stop the migration if UUIDs are not equal. Regards, Yury Yury Kotov (3): migration: Add x-validate-uuid capability tests/libqtest: Allow to set expected exit status tests/migration: Add a test for x-validate-uuid capability migration/migration.c | 9 +++ migration/migration.h | 1 + migration/savevm.c | 45 +++++++++++++ qapi/migration.json | 5 +- tests/libqtest.c | 14 ++++- tests/libqtest.h | 9 +++ tests/migration-test.c | 140 ++++++++++++++++++++++++++++++++--------- 7 files changed, 189 insertions(+), 34 deletions(-) -- 2.22.0