@@ -287,6 +287,19 @@ void sort_ram_list(void)
g_free(blocks);
}
+void ram_save_live_mem_size(QEMUFile *f)
+{
+ RAMBlock *block;
+
+ qemu_put_be64(f, ram_bytes_total() | RAM_SAVE_FLAG_MEM_SIZE);
+
+ QLIST_FOREACH(block, &ram_list.blocks, next) {
+ qemu_put_byte(f, strlen(block->idstr));
+ qemu_put_buffer(f, (uint8_t *)block->idstr, strlen(block->idstr));
+ qemu_put_be64(f, block->length);
+ }
+}
+
int ram_save_live(QEMUFile *f, int stage, void *opaque)
{
ram_addr_t addr;
@@ -321,13 +334,7 @@ int ram_save_live(QEMUFile *f, int stage, void *opaque)
memory_global_dirty_log_start();
- qemu_put_be64(f, ram_bytes_total() | RAM_SAVE_FLAG_MEM_SIZE);
-
- QLIST_FOREACH(block, &ram_list.blocks, next) {
- qemu_put_byte(f, strlen(block->idstr));
- qemu_put_buffer(f, (uint8_t *)block->idstr, strlen(block->idstr));
- qemu_put_be64(f, block->length);
- }
+ ram_save_live_mem_size(f);
}
bytes_transferred_last = bytes_transferred;
@@ -78,6 +78,7 @@ uint64_t ram_bytes_total(void);
void sort_ram_list(void);
int ram_save_block(QEMUFile *f);
+void ram_save_live_mem_size(QEMUFile *f);
int ram_save_live(QEMUFile *f, int stage, void *opaque);
int ram_load(QEMUFile *f, void *opaque, int version_id);
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> --- arch_init.c | 21 ++++++++++++++------- migration.h | 1 + 2 files changed, 15 insertions(+), 7 deletions(-)