This will introduce a new file format: add-cow. add-cow can benefit from other available functions, such as path_has_protocol and qed_read_string, so we will make them public.
Now add-cow is still using QEMUOptionParameter, not QemuOpts, I will send a separate patch series to convert. snapshot_blkdev are not supported now for add-cow, after converting QEMUOptionParameter to QemuOpts, will add related code. v11->v12: 1) Removed un-used feature bit. 2) Share cache code with qcow2.c. 3) Remove snapshot_blkdev support, will add it in another patch. 5) COW Bitmap field in add-cow file will be multiple of 65536. 6) fix grammer and typo. Dong Xu Wang (6): docs: document for add cow file format make path_has_protocol non-static qed_read_string to bdrv_read_string rename qcow2-cache.c to block-cache.c add-cow file format qemu-iotests block.c | 29 ++- block.h | 6 + block/Makefile.objs | 4 +- block/add-cow.c | 613 ++++++++++++++++++++++++++++++++++++++++++ block/add-cow.h | 85 ++++++ block/qcow2-cache.c | 323 ---------------------- block/qcow2-cluster.c | 66 +++-- block/qcow2-refcount.c | 66 +++-- block/qcow2.c | 36 ++-- block/qcow2.h | 24 +-- block/qed.c | 29 +-- block_int.h | 2 + docs/specs/add-cow.txt | 123 +++++++++ tests/qemu-iotests/017 | 2 +- tests/qemu-iotests/020 | 2 +- tests/qemu-iotests/check | 4 +- tests/qemu-iotests/common | 6 + tests/qemu-iotests/common.rc | 19 ++ trace-events | 13 +- 19 files changed, 994 insertions(+), 458 deletions(-) create mode 100644 block/add-cow.c create mode 100644 block/add-cow.h delete mode 100644 block/qcow2-cache.c create mode 100644 docs/specs/add-cow.txt