[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v5 38/45] Don't sync dirty bitmaps in postcopy

From: Dr. David Alan Gilbert (git)
Subject: [Qemu-devel] [PATCH v5 38/45] Don't sync dirty bitmaps in postcopy
Date: Wed, 25 Feb 2015 16:52:01 +0000

From: "Dr. David Alan Gilbert" <address@hidden>

Once we're in postcopy the source processors are stopped and memory
shouldn't change any more, so there's no need to look at the dirty

There are two notes to this:
  1) If we do resync and a page had changed then the page would get
     sent again, which the destination wouldn't allow (since it might
     have also modified the page)
  2) Before disabling this I'd seen very rare cases where a page had been
     marked dirtied although the memory contents are apparently identical

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
 arch_init.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch_init.c b/arch_init.c
index 7a1c9ea..9d8ca95 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -1398,7 +1398,10 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
 static int ram_save_complete(QEMUFile *f, void *opaque)
-    migration_bitmap_sync();
+    if (!migration_postcopy_phase(migrate_get_current())) {
+        migration_bitmap_sync();
+    }
     ram_control_before_iterate(f, RAM_CONTROL_FINISH);
@@ -1433,7 +1436,8 @@ static void ram_save_pending(QEMUFile *f, void *opaque, 
uint64_t max_size,
     remaining_size = ram_save_remaining() * TARGET_PAGE_SIZE;
-    if (remaining_size < max_size) {
+    if (!migration_postcopy_phase(migrate_get_current()) &&
+        remaining_size < max_size) {

reply via email to

[Prev in Thread] Current Thread [Next in Thread]