diff options
author | Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> | 2023-04-28 22:49:27 +0300 |
---|---|---|
committer | Juan Quintela <quintela@redhat.com> | 2023-05-10 18:48:12 +0200 |
commit | d70178a88fe8d0873508f6d4757018092262e9ec (patch) | |
tree | 33cbe3365210446138e84174415cbde3b4eb8438 /migration/options.c | |
parent | ecbfec6d7769b5362feac92404d564622198bf85 (diff) | |
download | qemu-d70178a88fe8d0873508f6d4757018092262e9ec.zip qemu-d70178a88fe8d0873508f6d4757018092262e9ec.tar.gz qemu-d70178a88fe8d0873508f6d4757018092262e9ec.tar.bz2 |
migration: disallow change capabilities in COLO state
COLO is not listed as running state in migrate_is_running(), so, it's
theoretically possible to disable colo capability in COLO state and the
unexpected error in migration_iteration_finish() is reachable.
Let's disallow that in qmp_migrate_set_capabilities. Than the error
becomes absolutely unreachable: we can get into COLO state only with
enabled capability and can't disable it while we are in COLO state. So
substitute the error by simple assertion.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: <20230428194928.1426370-10-vsementsov@yandex-team.ru>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'migration/options.c')
-rw-r--r-- | migration/options.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/migration/options.c b/migration/options.c index 9d92b15..7ed88b7 100644 --- a/migration/options.c +++ b/migration/options.c @@ -598,7 +598,7 @@ void qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params, MigrationCapabilityStatusList *cap; bool new_caps[MIGRATION_CAPABILITY__MAX]; - if (migration_is_running(s->state)) { + if (migration_is_running(s->state) || migration_in_colo_state()) { error_setg(errp, QERR_MIGRATION_ACTIVE); return; } |