Split qemu_savevm_state_header() into two parts. This paves way for a
reuse elsewhere.
Signed-off-by: Peter Xu <peterx@redhat.com>
---
migration/savevm.h | 1 +
migration/savevm.c | 58 +++++++++++++++++++++++++++-------------------
2 files changed, 35 insertions(+), 24 deletions(-)
diff --git a/migration/savevm.h b/migration/savevm.h
index 125a2507b7..5d815af742 100644
--- a/migration/savevm.h
+++ b/migration/savevm.h
@@ -37,6 +37,7 @@ int qemu_savevm_state_prepare(Error **errp);
int qemu_savevm_state_setup(QEMUFile *f, Error **errp);
bool qemu_savevm_state_guest_unplug_pending(void);
int qemu_savevm_state_resume_prepare(MigrationState *s);
+void qemu_savevm_send_header(QEMUFile *f);
void qemu_savevm_state_header(QEMUFile *f);
int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy);
void qemu_savevm_state_cleanup(void);
diff --git a/migration/savevm.c b/migration/savevm.c
index 3dc812a7bb..e26656cca3 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1282,38 +1282,48 @@ void qemu_savevm_non_migratable_list(strList **reasons)
}
}
-void qemu_savevm_state_header(QEMUFile *f)
+void qemu_savevm_send_header(QEMUFile *f)
{
- MigrationState *s = migrate_get_current();
- JSONWriter *vmdesc = s->vmdesc;
- Error *local_err = NULL;
-
trace_savevm_state_header();
qemu_put_be32(f, QEMU_VM_FILE_MAGIC);
qemu_put_be32(f, QEMU_VM_FILE_VERSION);
+}
- if (s->send_configuration) {
- qemu_put_byte(f, QEMU_VM_CONFIGURATION);
+static void qemu_savevm_send_configuration(MigrationState *s, QEMUFile *f)
+{
+ JSONWriter *vmdesc = s->vmdesc;
+ Error *local_err = NULL;
- if (vmdesc) {
- /*
- * 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(vmdesc, NULL);
- json_writer_start_object(vmdesc, "configuration");
- }
+ qemu_put_byte(f, QEMU_VM_CONFIGURATION);
- vmstate_save_state(f, &vmstate_configuration, &savevm_state,
- vmdesc, &local_err);
- if (local_err) {
- error_report_err(local_err);
- }
+ if (vmdesc) {
+ /*
+ * 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(vmdesc, NULL);
+ json_writer_start_object(vmdesc, "configuration");
+ }
- if (vmdesc) {
- json_writer_end_object(vmdesc);
- }
+ vmstate_save_state(f, &vmstate_configuration, &savevm_state,
+ vmdesc, &local_err);
+ if (local_err) {
+ error_report_err(local_err);
+ }
+
+ if (vmdesc) {
+ json_writer_end_object(vmdesc);
+ }
+}
+
+void qemu_savevm_state_header(QEMUFile *f)
+{
+ MigrationState *s = migrate_get_current();
+
+ qemu_savevm_send_header(f);
+ if (s->send_configuration) {
+ qemu_savevm_send_configuration(s, f);
}
}
--
2.50.1