On 05/21/2015 12:52 PM, Wen Congyang wrote: > Block replication is a very important feature which is used for > continuous checkpoints(for example: COLO). > > Usage: > Please refer to docs/block-replication.txt > > You can get the patch here: > https://github.com/wencongyang/qemu-colo/commits/block-replication-v5 > > The other newest COLO patchse will be sent soon. > > TODO: > 1. Continuous block replication. It will be started after basic functions > are accepted.
I forgot to methin that: you should apply the following patch first: http://lists.nongnu.org/archive/html/qemu-devel/2015-05/msg01317.html Thanks Wen Congyang > > Changs Log: > V5: > 1. Address the comments from Gong Lei > 2. Speed the failover up. The secondary vm can take over very quickly even > if there are too many I/O requests. > V4: > 1. Introduce a new driver replication to avoid touch nbd and qcow2. > V3: > 1: use error_setg() instead of error_set() > 2. Add a new block job API > 3. Active disk, hidden disk and nbd target uses the same AioContext > 4. Add a testcase to test new hbitmap API > V2: > 1. Redesign the secondary qemu(use image-fleecing) > 2. Use Error objects to return error message > 3. Address the comments from Max Reitz and Eric Blake > Wen Congyang (15): > docs: block replication's description > allow writing to the backing file > Allow creating backup jobs when opening BDS > block: Parse "backing_reference" option to reference existing BDS > Backup: clear all bitmap when doing block checkpoint > Don't allow a disk use backing reference target > Add new block driver interface to connect/disconnect the remote target > NBD client: implement block driver interfaces to connect/disconnect > NBD server > Introduce a new -drive option to control whether to connect to remote > target > NBD client: connect to nbd server later > Add new block driver interfaces to control block replication > skip nbd_target when starting block replication > quorum: implement block driver interfaces for block replication > quorum: allow ignoring child errors > Implement new driver for block replication > > block.c | 272 +++++++++++++++++++++++++++- > block/Makefile.objs | 3 +- > block/backup.c | 13 ++ > block/nbd.c | 69 +++++-- > block/quorum.c | 142 ++++++++++++++- > block/replication.c | 441 > +++++++++++++++++++++++++++++++++++++++++++++ > blockdev.c | 8 + > blockjob.c | 10 + > docs/block-replication.txt | 179 ++++++++++++++++++ > include/block/block.h | 10 + > include/block/block_int.h | 18 ++ > include/block/blockjob.h | 12 ++ > qapi/block.json | 16 ++ > qemu-options.hx | 4 + > tests/qemu-iotests/051 | 13 ++ > tests/qemu-iotests/051.out | 13 ++ > 16 files changed, 1193 insertions(+), 30 deletions(-) > create mode 100644 block/replication.c > create mode 100644 docs/block-replication.txt >