[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-3.0 v2 02/10] migration: loosen recovery check w
From: |
Peter Xu |
Subject: |
[Qemu-devel] [PATCH for-3.0 v2 02/10] migration: loosen recovery check when load vm |
Date: |
Tue, 10 Jul 2018 17:18:54 +0800 |
We were checking against -EIO, assuming that it will cover all IO
failures. But actually it is not. One example is that in
qemu_loadvm_section_start_full() we can have tons of places that will
return -EINVAL even if the error is caused by IO failures on the
network.
Let's loosen the recovery check logic here to cover all the error cases
happened by removing the explicit check against -EIO. After all we
won't lose anything here if any other failure happened.
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
---
migration/savevm.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/migration/savevm.c b/migration/savevm.c
index 851d74e8b6..efcc795071 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2276,18 +2276,14 @@ out:
qemu_file_set_error(f, ret);
/*
- * Detect whether it is:
- *
- * 1. postcopy running (after receiving all device data, which
- * must be in POSTCOPY_INCOMING_RUNNING state. Note that
- * POSTCOPY_INCOMING_LISTENING is still not enough, it's
- * still receiving device states).
- * 2. network failure (-EIO)
- *
- * If so, we try to wait for a recovery.
+ * If we are during an active postcopy, then we pause instead
+ * of bail out to at least keep the VM's dirty data. Note
+ * that POSTCOPY_INCOMING_LISTENING stage is still not enough,
+ * during which we're still receiving device states and we
+ * still haven't yet started the VM on destination.
*/
if (postcopy_state_get() == POSTCOPY_INCOMING_RUNNING &&
- ret == -EIO && postcopy_pause_incoming(mis)) {
+ postcopy_pause_incoming(mis)) {
/* Reset f to point to the newly created channel */
f = mis->from_src_file;
goto retry;
--
2.17.1
- [Qemu-devel] [PATCH for-3.0 v2 00/10] migration: postcopy recovery unit test, bug fixes, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 01/10] migration: simplify check to use qemu file buffer, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 02/10] migration: loosen recovery check when load vm,
Peter Xu <=
- [Qemu-devel] [PATCH for-3.0 v2 03/10] migration: fix incorrect bitmap size calculation, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 04/10] migration: show pause/recover state on dst host, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 05/10] tests: introduce migrate_postcopy_* helpers, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 06/10] tests: allow migrate() to take extra flags, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 07/10] tests: introduce migrate_query*() helpers, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 08/10] tests: introduce wait_for_migration_status(), Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 09/10] tests: add postcopy recovery test, Peter Xu, 2018/07/10