migration: move skip_configuration out

It was in SaveState but now moved to MigrationState altogether, reverted
its meaning, then renamed to "send_configuration". Again, using
HW_COMPAT_2_3 for old PC/SPAPR machines, and accel_register_prop() for
xen_init().

Removing savevm_skip_configuration().

Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <1498536619-14548-8-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:16 +08:00 committed by Juan Quintela
parent 3df663e575
commit 71dd4c1a56
8 changed files with 18 additions and 15 deletions

View file

@ -318,7 +318,6 @@ static void pc_compat_2_3(MachineState *machine)
if (kvm_enabled()) { if (kvm_enabled()) {
pcms->smm = ON_OFF_AUTO_OFF; pcms->smm = ON_OFF_AUTO_OFF;
} }
savevm_skip_configuration();
} }
static void pc_compat_2_2(MachineState *machine) static void pc_compat_2_2(MachineState *machine)

View file

@ -3581,7 +3581,6 @@ static void spapr_machine_2_3_instance_options(MachineState *machine)
{ {
spapr_machine_2_4_instance_options(machine); spapr_machine_2_4_instance_options(machine);
savevm_skip_section_footers(); savevm_skip_section_footers();
savevm_skip_configuration();
} }
static void spapr_machine_2_3_class_options(MachineClass *mc) static void spapr_machine_2_3_class_options(MachineClass *mc)

View file

@ -139,7 +139,6 @@ static int xen_init(MachineState *ms)
} }
qemu_add_vm_change_state_handler(xen_change_state_handler, NULL); qemu_add_vm_change_state_handler(xen_change_state_handler, NULL);
savevm_skip_configuration();
savevm_skip_section_footers(); savevm_skip_section_footers();
return 0; return 0;
@ -151,6 +150,11 @@ static GlobalProperty xen_compat_props[] = {
.property = "store-global-state", .property = "store-global-state",
.value = "off", .value = "off",
}, },
{
.driver = "migration",
.property = "send-configuration",
.value = "off",
},
{ /* end of list */ }, { /* end of list */ },
}; };

View file

@ -181,6 +181,10 @@
.driver = TYPE_PCI_DEVICE,\ .driver = TYPE_PCI_DEVICE,\
.property = "x-pcie-lnksta-dllla",\ .property = "x-pcie-lnksta-dllla",\
.value = "off",\ .value = "off",\
},{\
.driver = "migration",\
.property = "send-configuration",\
.value = "off",\
},{\ },{\
.driver = "migration",\ .driver = "migration",\
.property = "store-global-state",\ .property = "store-global-state",\

View file

@ -42,7 +42,6 @@ int64_t self_announce_delay(int round)
void dump_vmstate_json_to_file(FILE *out_fp); void dump_vmstate_json_to_file(FILE *out_fp);
void savevm_skip_section_footers(void); void savevm_skip_section_footers(void);
void savevm_skip_configuration(void);
/* migration/migration.c */ /* migration/migration.c */
void migration_object_init(void); void migration_object_init(void);

View file

@ -1985,6 +1985,8 @@ static Property migration_properties[] = {
DEFINE_PROP_BOOL("store-global-state", MigrationState, DEFINE_PROP_BOOL("store-global-state", MigrationState,
store_global_state, true), store_global_state, true),
DEFINE_PROP_BOOL("only-migratable", MigrationState, only_migratable, false), DEFINE_PROP_BOOL("only-migratable", MigrationState, only_migratable, false),
DEFINE_PROP_BOOL("send-configuration", MigrationState,
send_configuration, true),
DEFINE_PROP_END_OF_LIST(), DEFINE_PROP_END_OF_LIST(),
}; };

View file

@ -142,6 +142,9 @@ struct MigrationState
/* Whether the VM is only allowing for migratable devices */ /* Whether the VM is only allowing for migratable devices */
bool only_migratable; 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); void migrate_set_state(int *state, int old_state, int new_state);

View file

@ -287,7 +287,6 @@ typedef struct SaveStateEntry {
typedef struct SaveState { typedef struct SaveState {
QTAILQ_HEAD(, SaveStateEntry) handlers; QTAILQ_HEAD(, SaveStateEntry) handlers;
int global_section_id; int global_section_id;
bool skip_configuration;
uint32_t len; uint32_t len;
const char *name; const char *name;
uint32_t target_page_bits; uint32_t target_page_bits;
@ -296,15 +295,8 @@ typedef struct SaveState {
static SaveState savevm_state = { static SaveState savevm_state = {
.handlers = QTAILQ_HEAD_INITIALIZER(savevm_state.handlers), .handlers = QTAILQ_HEAD_INITIALIZER(savevm_state.handlers),
.global_section_id = 0, .global_section_id = 0,
.skip_configuration = false,
}; };
void savevm_skip_configuration(void)
{
savevm_state.skip_configuration = true;
}
static void configuration_pre_save(void *opaque) static void configuration_pre_save(void *opaque)
{ {
SaveState *state = 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_MAGIC);
qemu_put_be32(f, QEMU_VM_FILE_VERSION); 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); qemu_put_byte(f, QEMU_VM_CONFIGURATION);
vmstate_save_state(f, &vmstate_configuration, &savevm_state, 0); vmstate_save_state(f, &vmstate_configuration, &savevm_state, 0);
} }
} }
void qemu_savevm_state_begin(QEMUFile *f) void qemu_savevm_state_begin(QEMUFile *f)
@ -1995,7 +1987,8 @@ int qemu_loadvm_state(QEMUFile *f)
return -ENOTSUP; 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) { if (qemu_get_byte(f) != QEMU_VM_CONFIGURATION) {
error_report("Configuration section missing"); error_report("Configuration section missing");
return -EINVAL; return -EINVAL;