mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
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:
parent
3df663e575
commit
71dd4c1a56
8 changed files with 18 additions and 15 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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 */ },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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",\
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue