diff options
| author | Stefan Hajnoczi | 2013-02-10 23:12:46 +0100 |
|---|---|---|
| committer | Anthony Liguori | 2013-02-11 15:14:05 +0100 |
| commit | 2c5a7f20112615ce13a3434ab90bee1ed8d44ebd (patch) | |
| tree | 31a66d9ac94605b8ca7085fb8c32092618961c7b /block-migration.c | |
| parent | block-migration: fix blk_mig_save_dirty_block() return value checking (diff) | |
| download | qemu-2c5a7f20112615ce13a3434ab90bee1ed8d44ebd.tar.gz qemu-2c5a7f20112615ce13a3434ab90bee1ed8d44ebd.tar.xz qemu-2c5a7f20112615ce13a3434ab90bee1ed8d44ebd.zip | |
block-migration: fix block_save_iterate() return value
The .save_live_iterate() function returns 0 to continue iterating or 1
to stop iterating.
Since 16310a3cca7320edb9341c976f7819de0a8c27e0 it only ever returns 0,
leading to an infinite loop.
Return 1 if we have finished sending dirty blocks.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1360534366-26723-4-git-send-email-stefanha@redhat.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'block-migration.c')
| -rw-r--r-- | block-migration.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/block-migration.c b/block-migration.c index a91d96be5e..bcd0039025 100644 --- a/block-migration.c +++ b/block-migration.c @@ -582,7 +582,12 @@ static int block_save_iterate(QEMUFile *f, void *opaque) qemu_put_be64(f, BLK_MIG_FLAG_EOS); - return 0; + /* Complete when bulk transfer is done and all dirty blocks have been + * transferred. + */ + return block_mig_state.bulk_completed && + block_mig_state.submitted == 0 && + block_mig_state.read_done == 0; } static int block_save_complete(QEMUFile *f, void *opaque) |
