summaryrefslogtreecommitdiff
path: root/migration/ram.c
diff options
context:
space:
mode:
authorJuan Quintela <quintela@redhat.com>2018-04-18 10:13:21 +0200
committerJuan Quintela <quintela@redhat.com>2018-06-27 13:28:30 +0200
commit35374cbdff2bf6b6fb7caae5ea8aaa3b0f53f4ca (patch)
treea13a69728065d71a680d0797655db52736c31515 /migration/ram.c
parent7a5cc33c4878e998e1e2d7c9092dddf963aeb795 (diff)
downloadqemu-35374cbdff2bf6b6fb7caae5ea8aaa3b0f53f4ca.zip
migration: Stop sending whole pages through main channel
We have to flush() the QEMUFile because now we sent really few data through that channel. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'migration/ram.c')
-rw-r--r--migration/ram.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/migration/ram.c b/migration/ram.c
index 61f7313093..7d23b472cb 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1817,15 +1817,7 @@ static int ram_save_page(RAMState *rs, PageSearchStatus *pss, bool last_stage)
static int ram_save_multifd_page(RAMState *rs, RAMBlock *block,
ram_addr_t offset)
{
- uint8_t *p;
-
- p = block->host + offset;
-
- ram_counters.transferred += save_page_header(rs, rs->f, block,
- offset | RAM_SAVE_FLAG_PAGE);
multifd_queue_page(block, offset);
- qemu_put_buffer(rs->f, p, TARGET_PAGE_SIZE);
- ram_counters.transferred += TARGET_PAGE_SIZE;
ram_counters.normal++;
return 1;
@@ -3066,6 +3058,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
multifd_send_sync_main();
qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
+ qemu_fflush(f);
return 0;
}
@@ -3148,6 +3141,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
multifd_send_sync_main();
out:
qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
+ qemu_fflush(f);
ram_counters.transferred += 8;
ret = qemu_file_get_error(f);
@@ -3201,6 +3195,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
multifd_send_sync_main();
qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
+ qemu_fflush(f);
return 0;
}