aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2023-10-04 18:02:39 -0400
committerJuan Quintela <quintela@redhat.com>2023-10-11 11:17:02 +0200
commit0e99bb8f54418231baa084f1d8270e7500e48245 (patch)
tree6e536998a36f21d465bb63aab404aba64b2211b8
parent5274274c262edc6738ddc5c590dc0a08dd1090b1 (diff)
downloadqemu-0e99bb8f54418231baa084f1d8270e7500e48245.zip
qemu-0e99bb8f54418231baa084f1d8270e7500e48245.tar.gz
qemu-0e99bb8f54418231baa084f1d8270e7500e48245.tar.bz2
migration: Allow RECOVER->PAUSED convertion for dest qemu
There's a bug on dest that if a double fault triggered on dest qemu (a network issue during postcopy-recover), we won't set PAUSED correctly because we assumed we always came from ACTIVE. Fix that by always overwriting the state to PAUSE. We could also check for these two states, but maybe it's an overkill. We did the same on the src QEMU to unconditionally switch to PAUSE anyway. Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231004220240.167175-10-peterx@redhat.com>
-rw-r--r--migration/savevm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/migration/savevm.c b/migration/savevm.c
index 60eec7c..497ce02 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2734,7 +2734,8 @@ static bool postcopy_pause_incoming(MigrationIncomingState *mis)
qemu_mutex_unlock(&mis->postcopy_prio_thread_mutex);
}
- migrate_set_state(&mis->state, MIGRATION_STATUS_POSTCOPY_ACTIVE,
+ /* Current state can be either ACTIVE or RECOVER */
+ migrate_set_state(&mis->state, mis->state,
MIGRATION_STATUS_POSTCOPY_PAUSED);
/* Notify the fault thread for the invalidated file handle */