On 06/22/2012 04:46 PM, Juan Quintela wrote:
> ram_save_remaining() is an expensive operation when there is a lot of memory.
> So we only call the function when we need it.
>
> Signed-off-by: Juan Quintela <quint...@redhat.com>
> ---
> arch_init.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/arch_init.c b/arch_init.c
> index a9e8b74..424efe7 100644
> --- a/arch_init.c
> +++ b/arch_init.c
> @@ -299,7 +299,6 @@ int ram_save_live(QEMUFile *f, int stage, void *opaque)
> ram_addr_t addr;
> uint64_t bytes_transferred_last;
> double bwidth = 0;
> - uint64_t expected_time = 0;
> int ret;
>
> if (stage < 0) {
> @@ -376,9 +375,12 @@ int ram_save_live(QEMUFile *f, int stage, void *opaque)
>
> qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
>
> - expected_time = ram_save_remaining() * TARGET_PAGE_SIZE / bwidth;
> -
> - return (stage == 2) && (expected_time <= migrate_max_downtime());
> + if (stage == 2) {
> + uint64_t expected_time;
> + expected_time = ram_save_remaining() * TARGET_PAGE_SIZE / bwidth;
> + return expected_time <= migrate_max_downtime();
> + }
> + return 0;
> }
>
> static inline void *host_from_stream_offset(QEMUFile *f,
Reviewed-by: Orit Wasserman <owass...@redhat.com>