migration: move only_migratable to MigrationState

One less global variable, and it does only matter with migration.

We keep the old "--only-migratable" option, but also now we support:

  -global migration.only-migratable=true

Currently still keep the old interface.

Hmm, now vl.c has no way to access migrate_get_current(). Export a
function for it to setup only_migratable.

Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <1498536619-14548-7-git-send-email-peterx@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Peter Xu 2017-06-27 12:10:15 +08:00 committed by Juan Quintela
parent 5272298c48
commit 3df663e575
6 changed files with 20 additions and 5 deletions

View file

@ -115,6 +115,11 @@ MigrationState *migrate_get_current(void)
return current_migration;
}
void migration_only_migratable_set(void)
{
migrate_get_current()->only_migratable = true;
}
MigrationIncomingState *migration_incoming_get_current(void)
{
static bool once;
@ -986,7 +991,7 @@ static GSList *migration_blockers;
int migrate_add_blocker(Error *reason, Error **errp)
{
if (only_migratable) {
if (migrate_get_current()->only_migratable) {
error_propagate(errp, error_copy(reason));
error_prepend(errp, "disallowing migration blocker "
"(--only_migratable) for: ");
@ -1979,6 +1984,7 @@ void migrate_fd_connect(MigrationState *s)
static Property migration_properties[] = {
DEFINE_PROP_BOOL("store-global-state", MigrationState,
store_global_state, true),
DEFINE_PROP_BOOL("only-migratable", MigrationState, only_migratable, false),
DEFINE_PROP_END_OF_LIST(),
};