[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 10/33] migration/savevm: split qemu_savevm_state_comp
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [PULL 10/33] migration/savevm: split qemu_savevm_state_complete_precopy() into two parts |
Date: |
Thu, 15 Aug 2019 17:34:41 +0100 |
From: Wei Yang <address@hidden>
This is a preparation patch for further cleanup.
No functional change, just wrap two major part of
qemu_savevm_state_complete_precopy() into function.
Signed-off-by: Wei Yang <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
---
migration/savevm.c | 66 ++++++++++++++++++++++++++++++++++------------
1 file changed, 49 insertions(+), 17 deletions(-)
diff --git a/migration/savevm.c b/migration/savevm.c
index 0bfdceefcc..63545a3026 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1246,23 +1246,12 @@ void qemu_savevm_state_complete_postcopy(QEMUFile *f)
qemu_fflush(f);
}
-int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
- bool inactivate_disks)
+static
+int qemu_savevm_state_complete_precopy_iterable(QEMUFile *f, bool in_postcopy,
+ bool iterable_only)
{
- QJSON *vmdesc;
- int vmdesc_len;
SaveStateEntry *se;
int ret;
- bool in_postcopy = migration_in_postcopy();
- Error *local_err = NULL;
-
- if (precopy_notify(PRECOPY_NOTIFY_COMPLETE, &local_err)) {
- error_report_err(local_err);
- }
-
- trace_savevm_state_complete_precopy();
-
- cpu_synchronize_all_states();
QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
if (!se->ops ||
@@ -1291,9 +1280,18 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, bool
iterable_only,
}
}
- if (iterable_only) {
- goto flush;
- }
+ return 0;
+}
+
+static
+int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f,
+ bool in_postcopy,
+ bool inactivate_disks)
+{
+ QJSON *vmdesc;
+ int vmdesc_len;
+ SaveStateEntry *se;
+ int ret;
vmdesc = qjson_new();
json_prop_int(vmdesc, "page_size", qemu_target_page_size());
@@ -1353,6 +1351,40 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, bool
iterable_only,
}
qjson_destroy(vmdesc);
+ return 0;
+}
+
+int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
+ bool inactivate_disks)
+{
+ int ret;
+ Error *local_err = NULL;
+ bool in_postcopy = migration_in_postcopy();
+
+ if (precopy_notify(PRECOPY_NOTIFY_COMPLETE, &local_err)) {
+ error_report_err(local_err);
+ }
+
+ trace_savevm_state_complete_precopy();
+
+ cpu_synchronize_all_states();
+
+ ret = qemu_savevm_state_complete_precopy_iterable(f, in_postcopy,
+ iterable_only);
+ if (ret) {
+ return ret;
+ }
+
+ if (iterable_only) {
+ goto flush;
+ }
+
+ ret = qemu_savevm_state_complete_precopy_non_iterable(f, in_postcopy,
+ inactivate_disks);
+ if (ret) {
+ return ret;
+ }
+
flush:
qemu_fflush(f);
return 0;
--
2.21.0
- [Qemu-devel] [PULL 00/33] migration queue, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 01/33] migration: Add error_desc for file channel errors, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 02/33] hw/net: fix vmxnet3 live migration, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 03/33] migration: consolidate time info into populate_time_info, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 05/33] migration/postcopy: break the loop when there is no more page to discard, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 04/33] migration/postcopy: the valid condition is one less then end, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 06/33] migration/postcopy: discard_length must not be 0, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 07/33] migration/postcopy: reduce one operation to calculate fixup_start_addr, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 08/33] migration/postcopy: do_fixup is true when host_offset is non-zero, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 09/33] migration/savevm: flush file for iterable_only case, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 10/33] migration/savevm: split qemu_savevm_state_complete_precopy() into two parts,
Dr. David Alan Gilbert (git) <=
- [Qemu-devel] [PULL 11/33] migration/savevm: move non SaveStateEntry condition check out of iteration, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 12/33] migration/postcopy: PostcopyState is already set in loadvm_postcopy_handle_advise(), Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 13/33] migration/postcopy: start_postcopy could be true only when migrate_postcopy() return true, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 14/33] migration: use migration_in_postcopy() to check POSTCOPY_ACTIVE, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 15/33] migration: just pass RAMBlock is enough, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 17/33] migration: return -EINVAL directly when version_id mismatch, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 16/33] migration: equation is more proper than and to check LOADVM_QUIT, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 18/33] migration: extract ram_load_precopy, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 19/33] migration/postcopy: make PostcopyDiscardState a static variable, Dr. David Alan Gilbert (git), 2019/08/15
- [Qemu-devel] [PULL 20/33] migration/postcopy: simplify calculation of run_start and fixup_start_addr, Dr. David Alan Gilbert (git), 2019/08/15