diff --git a/Makefile.objs b/Makefile.objs index 4ef0a71..971b2f5 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -78,7 +78,6 @@ extra-obj-$(CONFIG_LINUX) += fsdev/ common-obj-y += tcg-runtime.o host-utils.o main-loop.o common-obj-y += migration.o migration-tcp.o -common-obj-y += migration.o migration-tcp.o common-obj-y += qemu-char.o #aio.o common-obj-y += block-migration.o iohandler.o common-obj-y += bitmap.o bitops.o diff --git a/arch_init.c b/arch_init.c index 86f8544..dada6de 100644 --- a/arch_init.c +++ b/arch_init.c @@ -642,12 +642,13 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) i++; } + qemu_mutex_unlock_ramlist(); + if (ret < 0) { bytes_transferred += total_sent; return ret; } - qemu_mutex_unlock_ramlist(); qemu_put_be64(f, RAM_SAVE_FLAG_EOS); total_sent += 8; bytes_transferred += total_sent; @@ -657,9 +658,8 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) static int ram_save_complete(QEMUFile *f, void *opaque) { - migration_bitmap_sync(); - qemu_mutex_lock_ramlist(); + migration_bitmap_sync(); /* try transferring iterative blocks of memory */ diff --git a/migration.c b/migration.c index c69e864..ecda263 100644 --- a/migration.c +++ b/migration.c @@ -20,8 +20,8 @@ #include "sysemu/sysemu.h" #include "block/block.h" #include "qemu/sockets.h" -#include "migration/block.h" #include "qemu/thread.h" +#include "migration/block.h" #include "qmp-commands.h" //#define DEBUG_MIGRATION @@ -650,8 +650,8 @@ static int64_t buffered_set_rate_limit(void *opaque, int64_t new_rate) new_rate = SIZE_MAX; } - s->xfer_limit = new_rate / 10; - + s->xfer_limit = new_rate / XFER_LIMIT_RATIO; + out: return s->xfer_limit; }