The migration thread polls s->state periodically, it does not use a mutex or condition variable, so it has to report quiescent states manually.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- migration.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migration.c b/migration.c index 83f5691..28010dc 100644 --- a/migration.c +++ b/migration.c @@ -22,6 +22,7 @@ #include "qemu/sockets.h" #include "migration/block.h" #include "qemu/thread.h" +#include "qemu/rcu.h" #include "qmp-commands.h" #include "trace.h" @@ -508,6 +509,7 @@ static void *migration_thread(void *opaque) int64_t current_time; uint64_t pending_size; + rcu_quiescent_state(); if (!qemu_file_rate_limit(s->file)) { DPRINTF("iterate\n"); pending_size = qemu_savevm_state_pending(s->file, max_size); -- 1.8.1.4