Rename save_live_complete to save_live_complete_precopy
In postcopy we're going to need to perform the complete phase for postcopiable devices at a different point, start out by renaming all of the 'complete's to make the difference obvious. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Amit Shah <amit.shah@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
aefeb18bde
commit
a3e06c3d13
@ -1588,7 +1588,7 @@ static int htab_load(QEMUFile *f, void *opaque, int version_id)
|
|||||||
static SaveVMHandlers savevm_htab_handlers = {
|
static SaveVMHandlers savevm_htab_handlers = {
|
||||||
.save_live_setup = htab_save_setup,
|
.save_live_setup = htab_save_setup,
|
||||||
.save_live_iterate = htab_save_iterate,
|
.save_live_iterate = htab_save_iterate,
|
||||||
.save_live_complete = htab_save_complete,
|
.save_live_complete_precopy = htab_save_complete,
|
||||||
.load_state = htab_load,
|
.load_state = htab_load,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ typedef struct SaveVMHandlers {
|
|||||||
SaveStateHandler *save_state;
|
SaveStateHandler *save_state;
|
||||||
|
|
||||||
void (*cleanup)(void *opaque);
|
void (*cleanup)(void *opaque);
|
||||||
int (*save_live_complete)(QEMUFile *f, void *opaque);
|
int (*save_live_complete_precopy)(QEMUFile *f, void *opaque);
|
||||||
|
|
||||||
/* This runs both outside and inside the iothread lock. */
|
/* This runs both outside and inside the iothread lock. */
|
||||||
bool (*is_active)(void *opaque);
|
bool (*is_active)(void *opaque);
|
||||||
|
@ -89,8 +89,8 @@ void qemu_savevm_state_begin(QEMUFile *f,
|
|||||||
const MigrationParams *params);
|
const MigrationParams *params);
|
||||||
void qemu_savevm_state_header(QEMUFile *f);
|
void qemu_savevm_state_header(QEMUFile *f);
|
||||||
int qemu_savevm_state_iterate(QEMUFile *f);
|
int qemu_savevm_state_iterate(QEMUFile *f);
|
||||||
void qemu_savevm_state_complete(QEMUFile *f);
|
|
||||||
void qemu_savevm_state_cleanup(void);
|
void qemu_savevm_state_cleanup(void);
|
||||||
|
void qemu_savevm_state_complete_precopy(QEMUFile *f);
|
||||||
uint64_t qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size);
|
uint64_t qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size);
|
||||||
int qemu_loadvm_state(QEMUFile *f);
|
int qemu_loadvm_state(QEMUFile *f);
|
||||||
|
|
||||||
|
@ -876,7 +876,7 @@ static SaveVMHandlers savevm_block_handlers = {
|
|||||||
.set_params = block_set_params,
|
.set_params = block_set_params,
|
||||||
.save_live_setup = block_save_setup,
|
.save_live_setup = block_save_setup,
|
||||||
.save_live_iterate = block_save_iterate,
|
.save_live_iterate = block_save_iterate,
|
||||||
.save_live_complete = block_save_complete,
|
.save_live_complete_precopy = block_save_complete,
|
||||||
.save_live_pending = block_save_pending,
|
.save_live_pending = block_save_pending,
|
||||||
.load_state = block_load,
|
.load_state = block_load,
|
||||||
.cleanup = block_migration_cleanup,
|
.cleanup = block_migration_cleanup,
|
||||||
|
@ -994,7 +994,7 @@ static void migration_completion(MigrationState *s, bool *old_vm_running,
|
|||||||
ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
|
ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
|
||||||
if (ret >= 0) {
|
if (ret >= 0) {
|
||||||
qemu_file_set_rate_limit(s->file, INT64_MAX);
|
qemu_file_set_rate_limit(s->file, INT64_MAX);
|
||||||
qemu_savevm_state_complete(s->file);
|
qemu_savevm_state_complete_precopy(s->file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qemu_mutex_unlock_iothread();
|
qemu_mutex_unlock_iothread();
|
||||||
|
@ -1700,7 +1700,7 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
|
|||||||
static SaveVMHandlers savevm_ram_handlers = {
|
static SaveVMHandlers savevm_ram_handlers = {
|
||||||
.save_live_setup = ram_save_setup,
|
.save_live_setup = ram_save_setup,
|
||||||
.save_live_iterate = ram_save_iterate,
|
.save_live_iterate = ram_save_iterate,
|
||||||
.save_live_complete = ram_save_complete,
|
.save_live_complete_precopy = ram_save_complete,
|
||||||
.save_live_pending = ram_save_pending,
|
.save_live_pending = ram_save_pending,
|
||||||
.load_state = ram_load,
|
.load_state = ram_load,
|
||||||
.cleanup = ram_migration_cleanup,
|
.cleanup = ram_migration_cleanup,
|
||||||
|
@ -807,19 +807,19 @@ static bool should_send_vmdesc(void)
|
|||||||
return !machine->suppress_vmdesc;
|
return !machine->suppress_vmdesc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qemu_savevm_state_complete(QEMUFile *f)
|
void qemu_savevm_state_complete_precopy(QEMUFile *f)
|
||||||
{
|
{
|
||||||
QJSON *vmdesc;
|
QJSON *vmdesc;
|
||||||
int vmdesc_len;
|
int vmdesc_len;
|
||||||
SaveStateEntry *se;
|
SaveStateEntry *se;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
trace_savevm_state_complete();
|
trace_savevm_state_complete_precopy();
|
||||||
|
|
||||||
cpu_synchronize_all_states();
|
cpu_synchronize_all_states();
|
||||||
|
|
||||||
QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
|
QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
|
||||||
if (!se->ops || !se->ops->save_live_complete) {
|
if (!se->ops || !se->ops->save_live_complete_precopy) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (se->ops && se->ops->is_active) {
|
if (se->ops && se->ops->is_active) {
|
||||||
@ -831,7 +831,7 @@ void qemu_savevm_state_complete(QEMUFile *f)
|
|||||||
|
|
||||||
save_section_header(f, se, QEMU_VM_SECTION_END);
|
save_section_header(f, se, QEMU_VM_SECTION_END);
|
||||||
|
|
||||||
ret = se->ops->save_live_complete(f, se->opaque);
|
ret = se->ops->save_live_complete_precopy(f, se->opaque);
|
||||||
trace_savevm_section_end(se->idstr, se->section_id, ret);
|
trace_savevm_section_end(se->idstr, se->section_id, ret);
|
||||||
save_section_footer(f, se);
|
save_section_footer(f, se);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@ -942,7 +942,7 @@ static int qemu_savevm_state(QEMUFile *f, Error **errp)
|
|||||||
|
|
||||||
ret = qemu_file_get_error(f);
|
ret = qemu_file_get_error(f);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
qemu_savevm_state_complete(f);
|
qemu_savevm_state_complete_precopy(f);
|
||||||
ret = qemu_file_get_error(f);
|
ret = qemu_file_get_error(f);
|
||||||
}
|
}
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
|
@ -1210,8 +1210,8 @@ savevm_section_skip(const char *id, unsigned int section_id) "%s, section_id %u"
|
|||||||
savevm_state_begin(void) ""
|
savevm_state_begin(void) ""
|
||||||
savevm_state_header(void) ""
|
savevm_state_header(void) ""
|
||||||
savevm_state_iterate(void) ""
|
savevm_state_iterate(void) ""
|
||||||
savevm_state_complete(void) ""
|
|
||||||
savevm_state_cleanup(void) ""
|
savevm_state_cleanup(void) ""
|
||||||
|
savevm_state_complete_precopy(void) ""
|
||||||
vmstate_save(const char *idstr, const char *vmsd_name) "%s, %s"
|
vmstate_save(const char *idstr, const char *vmsd_name) "%s, %s"
|
||||||
vmstate_load(const char *idstr, const char *vmsd_name) "%s, %s"
|
vmstate_load(const char *idstr, const char *vmsd_name) "%s, %s"
|
||||||
qemu_announce_self_iter(const char *mac) "%s"
|
qemu_announce_self_iter(const char *mac) "%s"
|
||||||
|
Loading…
Reference in New Issue
Block a user