diff options
Diffstat (limited to 'migration')
-rw-r--r-- | migration/migration.c | 2 | ||||
-rw-r--r-- | migration/migration.h | 3 | ||||
-rw-r--r-- | migration/savevm.c | 15 |
3 files changed, 9 insertions, 11 deletions
diff --git a/migration/migration.c b/migration/migration.c index 67f9e68..414e14d 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1985,6 +1985,8 @@ 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_BOOL("send-configuration", MigrationState, + send_configuration, true), DEFINE_PROP_END_OF_LIST(), }; diff --git a/migration/migration.h b/migration/migration.h index 34377dd..4d4ea0d 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -142,6 +142,9 @@ struct MigrationState /* Whether the VM is only allowing for migratable devices */ bool only_migratable; + + /* Whether we send QEMU_VM_CONFIGURATION during migration */ + bool send_configuration; }; void migrate_set_state(int *state, int old_state, int new_state); diff --git a/migration/savevm.c b/migration/savevm.c index 1499cd3..0a8c61f 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -287,7 +287,6 @@ typedef struct SaveStateEntry { typedef struct SaveState { QTAILQ_HEAD(, SaveStateEntry) handlers; int global_section_id; - bool skip_configuration; uint32_t len; const char *name; uint32_t target_page_bits; @@ -296,15 +295,8 @@ typedef struct SaveState { static SaveState savevm_state = { .handlers = QTAILQ_HEAD_INITIALIZER(savevm_state.handlers), .global_section_id = 0, - .skip_configuration = false, }; -void savevm_skip_configuration(void) -{ - savevm_state.skip_configuration = true; -} - - static void configuration_pre_save(void *opaque) { SaveState *state = opaque; @@ -970,11 +962,11 @@ void qemu_savevm_state_header(QEMUFile *f) qemu_put_be32(f, QEMU_VM_FILE_MAGIC); qemu_put_be32(f, QEMU_VM_FILE_VERSION); - if (!savevm_state.skip_configuration || enforce_config_section()) { + if (migrate_get_current()->send_configuration || + enforce_config_section()) { qemu_put_byte(f, QEMU_VM_CONFIGURATION); vmstate_save_state(f, &vmstate_configuration, &savevm_state, 0); } - } void qemu_savevm_state_begin(QEMUFile *f) @@ -1995,7 +1987,8 @@ int qemu_loadvm_state(QEMUFile *f) return -ENOTSUP; } - if (!savevm_state.skip_configuration || enforce_config_section()) { + if (migrate_get_current()->send_configuration || + enforce_config_section()) { if (qemu_get_byte(f) != QEMU_VM_CONFIGURATION) { error_report("Configuration section missing"); return -EINVAL; |