[Qemu-devel] [PULL 46/57] Don't sync dirty bitmaps in postcopy

2015-11-09 Thread Juan Quintela
From: "Dr. David Alan Gilbert" 

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
map.

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 
Reviewed-by: David Gibson 
Reviewed-by: Juan Quintela 
Reviewed-by: Amit Shah 
Signed-off-by: Juan Quintela 
---
 migration/ram.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 8bf0841..339b001 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1846,7 +1846,9 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
 {
 rcu_read_lock();

-migration_bitmap_sync();
+if (!migration_in_postcopy(migrate_get_current())) {
+migration_bitmap_sync();
+}

 ram_control_before_iterate(f, RAM_CONTROL_FINISH);

@@ -1881,7 +1883,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_in_postcopy(migrate_get_current()) &&
+remaining_size < max_size) {
 qemu_mutex_lock_iothread();
 rcu_read_lock();
 migration_bitmap_sync();
-- 
2.5.0




[Qemu-devel] [PULL 46/57] Don't sync dirty bitmaps in postcopy

2015-11-10 Thread Juan Quintela
From: "Dr. David Alan Gilbert" 

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
map.

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 
Reviewed-by: David Gibson 
Reviewed-by: Juan Quintela 
Reviewed-by: Amit Shah 
Signed-off-by: Juan Quintela 
---
 migration/ram.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 8bf0841..339b001 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1846,7 +1846,9 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
 {
 rcu_read_lock();

-migration_bitmap_sync();
+if (!migration_in_postcopy(migrate_get_current())) {
+migration_bitmap_sync();
+}

 ram_control_before_iterate(f, RAM_CONTROL_FINISH);

@@ -1881,7 +1883,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_in_postcopy(migrate_get_current()) &&
+remaining_size < max_size) {
 qemu_mutex_lock_iothread();
 rcu_read_lock();
 migration_bitmap_sync();
-- 
2.5.0