diff options
| author | Anthony Liguori <aliguori@us.ibm.com> | 2011-10-20 08:46:55 -0500 |
|---|---|---|
| committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-10-20 08:46:55 -0500 |
| commit | a6e43daa732b90b9ca58e7c38f6faa5a82f4b176 (patch) | |
| tree | 7c8c8e63ff65cef5e3f9b0e3cded21b160e4e93d /arch_init.c | |
| parent | 46cd37e7718f6c2c502228a61b3a0811c849c52f (diff) | |
| parent | ee86c61f285042386c0a27edf69300627a1987b4 (diff) | |
| download | focaccia-qemu-a6e43daa732b90b9ca58e7c38f6faa5a82f4b176.tar.gz focaccia-qemu-a6e43daa732b90b9ca58e7c38f6faa5a82f4b176.zip | |
Merge remote-tracking branch 'quintela/migration-pull' into staging
Diffstat (limited to 'arch_init.c')
| -rw-r--r-- | arch_init.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/arch_init.c b/arch_init.c index a6c69c75a9..a411fdf263 100644 --- a/arch_init.c +++ b/arch_init.c @@ -256,6 +256,7 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) uint64_t bytes_transferred_last; double bwidth = 0; uint64_t expected_time = 0; + int ret; if (stage < 0) { cpu_physical_memory_set_dirty_tracking(0); @@ -263,8 +264,8 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) } if (cpu_physical_sync_dirty_bitmap(0, TARGET_PHYS_ADDR_MAX) != 0) { - qemu_file_set_error(f); - return 0; + qemu_file_set_error(f, -EINVAL); + return -EINVAL; } if (stage == 1) { @@ -300,7 +301,7 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) bytes_transferred_last = bytes_transferred; bwidth = qemu_get_clock_ns(rt_clock); - while (!qemu_file_rate_limit(f)) { + while ((ret = qemu_file_rate_limit(f)) == 0) { int bytes_sent; bytes_sent = ram_save_block(f); @@ -310,6 +311,10 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) } } + if (ret < 0) { + return ret; + } + bwidth = qemu_get_clock_ns(rt_clock) - bwidth; bwidth = (bytes_transferred - bytes_transferred_last) / bwidth; @@ -371,6 +376,7 @@ int ram_load(QEMUFile *f, void *opaque, int version_id) { ram_addr_t addr; int flags; + int error; if (version_id < 3 || version_id > 4) { return -EINVAL; @@ -451,8 +457,9 @@ int ram_load(QEMUFile *f, void *opaque, int version_id) qemu_get_buffer(f, host, TARGET_PAGE_SIZE); } - if (qemu_file_has_error(f)) { - return -EIO; + error = qemu_file_get_error(f); + if (error) { + return error; } } while (!(flags & RAM_SAVE_FLAG_EOS)); |