Previously live commit of active block device is not supported, this series implements it and updates corresponding qemu-iotests cases.
v4: Rewrite to reuse block/mirror.c. When committing the active layer, the job is internally a mirror job with type name faked to "commit". When the job completes, the BDSes are swapped, so the base image become active and [top, base) dropped. Fam Zheng (7): block: add bdrv_common_ancestor() qmp: add internal sync mode "common" to mirror_start mirror: don't close target mirror: Add commit_job_type to perform commit with mirror code commit: support commit active layer commit: remove unused check qemu-iotests: update test cases for commit active block.c | 15 ++++++++++ block/commit.c | 7 ----- block/mirror.c | 29 +++++++++++++++--- blockdev.c | 49 +++++++++++++++++++++++++++++-- include/block/block.h | 2 ++ include/block/block_int.h | 2 ++ qapi-schema.json | 2 +- tests/qemu-iotests/040 | 73 ++++++++++++++++++++-------------------------- tests/qemu-iotests/041 | 5 ++++ tests/qemu-iotests/041.out | 4 +-- 10 files changed, 129 insertions(+), 59 deletions(-) -- 1.8.3.1