qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
To: qemu-devel@nongnu.org, peterx@redhat.com, quintela@redhat.com
Subject: [Qemu-devel] [PULL 03/15] migration: unbreak postcopy recovery
Date: Tue, 10 Jul 2018 16:30:04 +0100	[thread overview]
Message-ID: <20180710153016.131258-4-dgilbert@redhat.com> (raw)
In-Reply-To: <20180710153016.131258-1-dgilbert@redhat.com>

From: Peter Xu <peterx@redhat.com>

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 36c2f8be2c.

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

Fixes: 36c2f8be2c ("migration: Delay start of migration main routines")
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20180627132246.5576-4-peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 migration/migration.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/migration/migration.c b/migration/migration.c
index aea6fb7444..eb3e09e899 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -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();
 
@@ -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)
@@ -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;
     }
-- 
2.17.1

  parent reply	other threads:[~2018-07-10 15:30 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-10 15:30 [Qemu-devel] [PULL 00/15] migration queue Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 01/15] migration: delay postcopy paused state Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 02/15] migration: move income process out of multifd Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` Dr. David Alan Gilbert (git) [this message]
2018-07-10 15:30 ` [Qemu-devel] [PULL 04/15] migration: unify incoming processing Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 05/15] migration: simplify check to use qemu file buffer Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 06/15] migration: loosen recovery check when load vm Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 07/15] migration: fix incorrect bitmap size calculation Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 08/15] migration: show pause/recover state on dst host Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 09/15] tests: introduce migrate_postcopy_* helpers Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 10/15] tests: allow migrate() to take extra flags Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 11/15] tests: introduce migrate_query*() helpers Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 12/15] tests: introduce wait_for_migration_status() Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 13/15] tests: add postcopy recovery test Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 14/15] tests: hide stderr for " Dr. David Alan Gilbert (git)
2018-07-10 15:30 ` [Qemu-devel] [PULL 15/15] migration: reorder MIG_CMD_POSTCOPY_RESUME Dr. David Alan Gilbert (git)
2018-07-10 16:28 ` [Qemu-devel] [PULL 00/15] migration queue Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180710153016.131258-4-dgilbert@redhat.com \
    --to=dgilbert@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).