diff options
| author | Peter Xu | 2018-06-27 15:22:43 +0200 |
|---|---|---|
| committer | Dr. David Alan Gilbert | 2018-07-10 13:48:53 +0200 |
| commit | eed1cc7866ae35bd28926d75447dd6076bd6bb96 (patch) | |
| tree | ce186b7d0f99d6280b4de6d46e0ca1a3cccd73d5 | |
| parent | target/arm: Use correct mmu_idx for exception-return unstacking (diff) | |
| download | qemu-eed1cc7866ae35bd28926d75447dd6076bd6bb96.tar.gz qemu-eed1cc7866ae35bd28926d75447dd6076bd6bb96.tar.xz qemu-eed1cc7866ae35bd28926d75447dd6076bd6bb96.zip | |
migration: delay postcopy paused state
Before this patch we firstly setup the postcopy-paused state then we
clean up the QEMUFile handles. That can be racy if there is a very fast
"migrate-recover" command running in parallel. Fix that up.
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20180627132246.5576-2-peterx@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
| -rw-r--r-- | migration/savevm.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/migration/savevm.c b/migration/savevm.c index c2f34ffc7c..851d74e8b6 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2194,9 +2194,6 @@ static bool postcopy_pause_incoming(MigrationIncomingState *mis) /* Clear the triggered bit to allow one recovery */ mis->postcopy_recover_triggered = false; - migrate_set_state(&mis->state, MIGRATION_STATUS_POSTCOPY_ACTIVE, - MIGRATION_STATUS_POSTCOPY_PAUSED); - assert(mis->from_src_file); qemu_file_shutdown(mis->from_src_file); qemu_fclose(mis->from_src_file); @@ -2209,6 +2206,9 @@ static bool postcopy_pause_incoming(MigrationIncomingState *mis) mis->to_src_file = NULL; qemu_mutex_unlock(&mis->rp_mutex); + migrate_set_state(&mis->state, MIGRATION_STATUS_POSTCOPY_ACTIVE, + MIGRATION_STATUS_POSTCOPY_PAUSED); + /* Notify the fault thread for the invalidated file handle */ postcopy_fault_thread_notify(mis); |
