aboutsummaryrefslogtreecommitdiff
path: root/migration
diff options
context:
space:
mode:
authorNikolay Borisov <nborisov@suse.com>2023-10-09 15:43:21 -0300
committerJuan Quintela <quintela@redhat.com>2023-10-17 09:14:32 +0200
commit2aae1eb8da6560cf58fa14f6bb65d00e0304f0e0 (patch)
treeefc6906f7f2412e3bf23f91f844ab086e390988e /migration
parentf75ed59f40bed3ce94adad4b3ebbb7bfacfdf4ab (diff)
downloadqemu-2aae1eb8da6560cf58fa14f6bb65d00e0304f0e0.zip
qemu-2aae1eb8da6560cf58fa14f6bb65d00e0304f0e0.tar.gz
qemu-2aae1eb8da6560cf58fa14f6bb65d00e0304f0e0.tar.bz2
migration: Add the configuration vmstate to the json writer
Make the migration json writer part of MigrationState struct, allowing the 'configuration' object be serialized to json. This will facilitate the parsing of the 'configuration' object in the next patch that fixes analyze-migration.py for arm. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231009184326.15777-2-farosas@suse.de>
Diffstat (limited to 'migration')
-rw-r--r--migration/migration.c1
-rw-r--r--migration/savevm.c20
2 files changed, 17 insertions, 4 deletions
diff --git a/migration/migration.c b/migration/migration.c
index ed04ca3..98151b1 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1442,6 +1442,7 @@ int migrate_init(MigrationState *s, Error **errp)
error_free(s->error);
s->error = NULL;
s->hostname = NULL;
+ s->vmdesc = NULL;
migrate_set_state(&s->state, MIGRATION_STATUS_NONE, MIGRATION_STATUS_SETUP);
diff --git a/migration/savevm.c b/migration/savevm.c
index 497ce02..bce698b 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1217,13 +1217,27 @@ void qemu_savevm_non_migratable_list(strList **reasons)
void qemu_savevm_state_header(QEMUFile *f)
{
+ MigrationState *s = migrate_get_current();
+
+ s->vmdesc = json_writer_new(false);
+
trace_savevm_state_header();
qemu_put_be32(f, QEMU_VM_FILE_MAGIC);
qemu_put_be32(f, QEMU_VM_FILE_VERSION);
- if (migrate_get_current()->send_configuration) {
+ if (s->send_configuration) {
qemu_put_byte(f, QEMU_VM_CONFIGURATION);
- vmstate_save_state(f, &vmstate_configuration, &savevm_state, 0);
+
+ /*
+ * This starts the main json object and is paired with the
+ * json_writer_end_object in
+ * qemu_savevm_state_complete_precopy_non_iterable
+ */
+ json_writer_start_object(s->vmdesc, NULL);
+
+ json_writer_start_object(s->vmdesc, "configuration");
+ vmstate_save_state(f, &vmstate_configuration, &savevm_state, s->vmdesc);
+ json_writer_end_object(s->vmdesc);
}
}
@@ -1272,8 +1286,6 @@ void qemu_savevm_state_setup(QEMUFile *f)
Error *local_err = NULL;
int ret;
- ms->vmdesc = json_writer_new(false);
- json_writer_start_object(ms->vmdesc, NULL);
json_writer_int64(ms->vmdesc, "page_size", qemu_target_page_size());
json_writer_start_array(ms->vmdesc, "devices");