Skip to content

Commit

Permalink
migration: unbreak postcopy recovery
Browse files Browse the repository at this point in the history
The whole postcopy recovery logic was accidentally broken.  We need to
fix it in two steps.

This is the first step that we should do the recovery when needed.  It
was bypassed before after commit 36c2f8b.

Introduce postcopy_try_recovery() helper for the postcopy recovery
logic.  Call it both in migration_fd_process_incoming() and
migration_ioc_process_incoming().

Fixes: 36c2f8b ("migration: Delay start of migration main routines")
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <[email protected]>
Reviewed-by: Juan Quintela <[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  • Loading branch information
xzpeter authored and dagrh committed Jul 10, 2018
1 parent 81e6205 commit 884835f
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions migration/migration.c
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,8 @@ void migration_incoming_process(void)
qemu_coroutine_enter(co);
}

void migration_fd_process_incoming(QEMUFile *f)
/* Returns true if recovered from a paused migration, otherwise false */
static bool postcopy_try_recover(QEMUFile *f)
{
MigrationIncomingState *mis = migration_incoming_get_current();

Expand All @@ -491,11 +492,20 @@ void migration_fd_process_incoming(QEMUFile *f)
* that source is ready to reply to page requests.
*/
qemu_sem_post(&mis->postcopy_pause_sem_dst);
} else {
/* New incoming migration */
migration_incoming_setup(f);
migration_incoming_process();
return true;
}

return false;
}

void migration_fd_process_incoming(QEMUFile *f)
{
if (postcopy_try_recover(f)) {
return;
}

migration_incoming_setup(f);
migration_incoming_process();
}

void migration_ioc_process_incoming(QIOChannel *ioc)
Expand All @@ -504,6 +514,9 @@ void migration_ioc_process_incoming(QIOChannel *ioc)

if (!mis->from_src_file) {
QEMUFile *f = qemu_fopen_channel_input(ioc);
if (postcopy_try_recover(f)) {
return;
}
migration_incoming_setup(f);
return;
}
Expand Down

0 comments on commit 884835f

Please sign in to comment.