This series adds support for live migration without shared storage, means 
copy the storage while migrating. It was tested with KVM. Supports 2 ways 
to replicate the storage during migration:
1. Complete copy of storage to destination 
2. Assuming the storage is cow based, copy only the allocated 
data, time of the migration will be linear with the amount of allocated 
data (user responsibility to verify that the same backend file reside 
on src and destination).

Live migration will work as follows:
(qemu) migrate -d tcp:0:4444 # for ordinary live migration
(qemu) migrate -d blk tcp:0:4444 # for live migration with complete storage copy
(qemu) migrate -d blk inc tcp:0:4444 # for live migration with incremental 
storage copy, storage is cow based.

Changes from v4:
- Register block dirty tracking for each block device.
- Block.c will now manage a dirty bitmap per device once 
bdrv_set_dirty_tracking() is called. Bitmap is polled by the upper 
layer (block-migration.c).
- Global variabels moved to a global state structure allocated dynamically.
- Coding style issues.

Patch summary:

Makefile          |    1 +
block-migration.c |  558 +++++++++++++++++++++++++++++++++++++++++++++++++++++
block-migration.h |   29 +++
block.c           |   78 ++++++++-
block.h           |    8 +-
block_int.h       |    2 +
buffered_file.c   |   10 +-
hw/hw.h           |    9 +-
migration-exec.c  |    9 +-
migration-fd.c    |    7 +-
migration-tcp.c   |    7 +-
migration-unix.c  |    7 +-
migration.c       |   23 ++-
migration.h       |   20 ++-
monitor.c         |   36 +++-
qemu-monitor.hx   |   19 ++-
savevm.c          |   62 +++++--
sysemu.h          |    2 +-
vl.c              |    9 +-
19 files changed, 841 insertions(+), 55 deletions(-)

Signed-off-by: Liran Schour <lir...@il.ibm.com>


Reply via email to