From: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
To: qemu-devel@nongnu.org, peterx@redhat.com, philmd@redhat.com,
zhangjiachen.jaycee@bytedance.com, mreitz@redhat.com
Cc: stefanha@redhat.com, quintela@redhat.com
Subject: [PULL 01/12] migration: Unify reset of last_rb on destination node when recover
Date: Mon, 2 Nov 2020 19:56:46 +0000 [thread overview]
Message-ID: <20201102195657.219501-2-dgilbert@redhat.com> (raw)
In-Reply-To: <20201102195657.219501-1-dgilbert@redhat.com>
From: Peter Xu <peterx@redhat.com>
When postcopy recover happens, we need to reset last_rb after each return of
postcopy_pause_fault_thread() because that means we just got the postcopy
migration continued.
Unify this reset to the place right before we want to kick the fault thread
again, when we get the command MIG_CMD_POSTCOPY_RESUME from source.
This is actually more than that - because the main thread on destination will
now be able to call migrate_send_rp_req_pages_pending() too, so the fault
thread is not the only user of last_rb now. Move the reset earlier will allow
the first call to migrate_send_rp_req_pages_pending() to use the reset value
even if called from the main thread.
(NOTE: this is not a real fix to 0c26781c09 mentioned below, however it is just
a mark that when picking up 0c26781c09 we'd better have this one too; the real
fix will come later)
Fixes: 0c26781c09 ("migration: Sync requested pages after postcopy recovery")
Tested-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20201102153010.11979-2-peterx@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
migration/postcopy-ram.c | 2 --
migration/savevm.c | 6 ++++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
index d3bb3a744b..d99842eb1b 100644
--- a/migration/postcopy-ram.c
+++ b/migration/postcopy-ram.c
@@ -903,7 +903,6 @@ static void *postcopy_ram_fault_thread(void *opaque)
* the channel is rebuilt.
*/
if (postcopy_pause_fault_thread(mis)) {
- mis->last_rb = NULL;
/* Continue to read the userfaultfd */
} else {
error_report("%s: paused but don't allow to continue",
@@ -985,7 +984,6 @@ retry:
/* May be network failure, try to wait for recovery */
if (ret == -EIO && postcopy_pause_fault_thread(mis)) {
/* We got reconnected somehow, try to continue */
- mis->last_rb = NULL;
goto retry;
} else {
/* This is a unavoidable fault */
diff --git a/migration/savevm.c b/migration/savevm.c
index 21ccba9fb3..e8834991ec 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2061,6 +2061,12 @@ static int loadvm_postcopy_handle_resume(MigrationIncomingState *mis)
return 0;
}
+ /*
+ * Reset the last_rb before we resend any page req to source again, since
+ * the source should have it reset already.
+ */
+ mis->last_rb = NULL;
+
/*
* This means source VM is ready to resume the postcopy migration.
* It's time to switch state and release the fault thread to
--
2.28.0
next prev parent reply other threads:[~2020-11-02 20:04 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-02 19:56 [PULL 00/12] migration queue Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` Dr. David Alan Gilbert (git) [this message]
2020-11-02 19:56 ` [PULL 02/12] migration: Postpone the kick of the fault thread after recover Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 03/12] virtiofsd: Seccomp: Add 'send' for syslog Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 04/12] tools/virtiofsd: Check vu_init() return value (CID 1435958) Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 05/12] virtiofsd: Fix the help message of posix lock Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 06/12] virtiofsd: Check FUSE_SUBMOUNTS Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 07/12] virtiofsd: Add attr_flags to fuse_entry_param Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 08/12] meson.build: Check for statx() Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 09/12] virtiofsd: Add mount ID to the lo_inode key Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 10/12] virtiofsd: Announce sub-mount points Dr. David Alan Gilbert (git)
2020-11-03 10:24 ` Max Reitz
2020-11-03 10:29 ` Dr. David Alan Gilbert
2020-11-02 19:56 ` [PULL 11/12] tests/acceptance/boot_linux: Accept SSH pubkey Dr. David Alan Gilbert (git)
2020-11-02 19:56 ` [PULL 12/12] tests/acceptance: Add virtiofs_submounts.py Dr. David Alan Gilbert (git)
2020-11-03 10:37 ` [PULL 00/12] 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=20201102195657.219501-2-dgilbert@redhat.com \
--to=dgilbert@redhat.com \
--cc=mreitz@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@redhat.com \
--cc=zhangjiachen.jaycee@bytedance.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).