On 10/24/2013 10:15 PM, Paolo Bonzini wrote:
Il 22/10/2013 04:25, Lei Li ha scritto:
Signed-off-by: Lei Li <li...@linux.vnet.ibm.com>
---
  migration.c |   10 +++++++---
  1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/migration.c b/migration.c
index 4ac466b..568b73a 100644
--- a/migration.c
+++ b/migration.c
@@ -579,10 +579,11 @@ static void *migration_thread(void *opaque)
              pending_size = qemu_savevm_state_pending(s->file, max_size);
              DPRINTF("pending size %" PRIu64 " max %" PRIu64 "\n",
                      pending_size, max_size);
-            if (pending_size && pending_size >= max_size) {
+            if (pending_size && pending_size >= max_size &&
+                !migrate_unix_page_flipping()) {
This is a bit ugly but I understand the need.  Perhaps "&&
!runstate_needs_reset()" like below?

'&& !runstate_needs_reset()' is fine, thanks.


Paolo

                  qemu_savevm_state_iterate(s->file);
              } else {
-                int ret;
+                int ret = 0;
DPRINTF("done iterating\n");
                  qemu_mutex_lock_iothread();
@@ -590,7 +591,10 @@ static void *migration_thread(void *opaque)
                  qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER);
                  old_vm_running = runstate_is_running();
- ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
+                if (!runstate_needs_reset()) {
+                    ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
+                }
+
                  if (ret >= 0) {
                      qemu_file_set_rate_limit(s->file, INT_MAX);
                      qemu_savevm_state_complete(s->file);




--
Lei


Reply via email to