Continuing with the migrate_cancel testing, this time I blocked cancel during postcopy. This simplified the tests a lot.
I also added a new fix for pre-switchover, which was ignoring the cancelling state. Upfront are some trivial cleanups to function names. Thanks CI run: https://gitlab.com/farosas/qemu/-/pipelines/1665902865 v1: https://lore.kernel.org/r/20241202220137.32584-1-faro...@suse.de While working on downstream issues with postcopy, I ended up writing a set of tests for issuing qmp_migrate_cancel() at various points during the migration. That exposed some bugs, which this series attempts to fix. There is also a fix for the issue Daniel found: https://gitlab.com/qemu-project/qemu/-/issues/2633 I'm also sending the test code. It creates one test per MIGRATION_STATUS_ state. Each test starts a migration, waits for that specific state to be reached, issues qmp_migrate_cancel() and checks that the migration state changes to cancelled (for now only cancelling migration from the source side). I was initially worried that this would be too racy, but so far each test has survived 1000 iterations. I'm thinking it's worth merging, specially because even after working on this I haven't been able to clear the questions we have in our todo list [1], so we'll probably need more work around this area in the future. 1- https://wiki.qemu.org/ToDo/LiveMigration#Migration_cancel_concurrency Fabiano Rosas (9): migration: Set migration error outside of migrate_cancel migration: Unify migration_cancel and migrate_fd_cancel migration: Change migrate_fd_ to migration_ migration: Fix hang after error in destination setup phase migration: Reject qmp_migrate_cancel after postcopy migration: Don't set FAILED state when cancelling tests/qtest/migration: Introduce migration_test_add_suffix tests/qtest/migration: Add a cancel test migration: Update migrate_cancel documentation migration/channel.c | 9 +- migration/migration.c | 70 +++++----- migration/migration.h | 4 +- migration/multifd.c | 2 +- migration/ram.c | 4 +- migration/rdma.c | 2 +- migration/trace-events | 4 +- qapi/migration.json | 4 +- tests/qtest/migration/migration-util.c | 24 ++++ tests/qtest/migration/migration-util.h | 2 + tests/qtest/migration/precopy-tests.c | 176 +++++++++++++++++++++++++ 11 files changed, 259 insertions(+), 42 deletions(-) -- 2.35.3