The first 7 patches are technically v2 of
[libvirt] [RFC PATCH 00/16] qemu: checkpoint: Add support for deleting checkpoints accross
snapshots
https://www.redhat.com/archives/libvir-list/2020-January/msg00430.html
as they were not reviewed, but the handling of block copy would conflict
with them I'm reposting them with two simple bugfixes.
The rest of the series implements handling of bitmaps when doing a block
copy.
Peter Krempa (19):
tests: qemublock: Add test for checkpoint deletion bitmap merge
tests: qemublock: Add few more test cases for checkpoint deletion
tests: qemublock: Add synthetic snapshot+checkpoint test data
qemu: checkpoint: Introduce support for deleting checkpoints accross
snapshots
tests: qemublock: Add checkpoint deletion test for deep backing chain
tests: qemublock: Add checkpoint deletion tests for some special cases
qemu: checkpoint: Track and relabel images for bitmap merging
qemu: block: Extract calls of qemuBlockGetNamedNodeData into a helper
function
util: json: Introduce virJSONValueArrayConcat
virJSONValueNewArray: Use g_new0 to allocate and remove NULL checks
from callers
virhash: Make sure that hash key is always copied
virHashAddOrUpdateEntry: Simplify allocation of new entry
qemu: blockjob: Store 'jobflags' with block job data
qemu: blockjob: Store 'flags' for all the block job types
qemu: block: Add validator for bitmap chains accross backing chains
tests: qemublocktest: Add another synthetic test case for broken
bitmaps
qemu: block: Introduce function to calculate bitmap handling for
block-copy
tests: qemublock: Add tests for qemuBlockBitmapsHandleBlockcopy
qemuDomainBlockPivot: Copy bitmaps backing checkpoints for
virDomainBlockCopy
src/conf/domain_addr.c | 5 +-
src/libvirt_private.syms | 1 +
src/locking/lock_daemon.c | 4 +-
src/logging/log_handler.c | 3 +-
src/network/leaseshelper.c | 6 +-
src/qemu/qemu_agent.c | 6 +-
src/qemu/qemu_backup.c | 11 +-
src/qemu/qemu_block.c | 208 ++++-
src/qemu/qemu_block.h | 16 +
src/qemu/qemu_blockjob.c | 16 +-
src/qemu/qemu_blockjob.h | 12 +-
src/qemu/qemu_checkpoint.c | 146 +++-
src/qemu/qemu_checkpoint.h | 6 +-
src/qemu/qemu_domain.c | 7 +
src/qemu/qemu_driver.c | 54 +-
src/qemu/qemu_firmware.c | 12 +-
src/qemu/qemu_migration_params.c | 3 +-
src/qemu/qemu_monitor_json.c | 3 +-
src/rpc/virnetserver.c | 6 +-
src/rpc/virnetserverservice.c | 3 +-
src/util/virhash.c | 13 +-
src/util/virhash.h | 3 +-
src/util/virjson.c | 44 +-
src/util/virjson.h | 2 +
src/util/virlockspace.c | 6 +-
src/util/virmacmap.c | 8 +-
tests/qemublocktest.c | 250 +++++-
.../bitmap/snapshots-synthetic-broken.json | 819 +++++++++++++++++
.../bitmap/snapshots-synthetic-broken.out | 12 +
.../snapshots-synthetic-checkpoint.json | 827 ++++++++++++++++++
.../bitmap/snapshots-synthetic-checkpoint.out | 13 +
.../bitmapblockcopy/basic-deep-out.json | 117 +++
.../bitmapblockcopy/basic-shallow-out.json | 117 +++
.../bitmapblockcopy/snapshots-deep-out.json | 133 +++
.../snapshots-shallow-out.json | 48 +
.../checkpointdelete/basic-current-out.json | 29 +
.../basic-intermediate1-out.json | 22 +
.../basic-intermediate2-out.json | 22 +
.../basic-intermediate3-out.json | 22 +
.../checkpointdelete/basic-noparent-out.json | 9 +
.../snapshots-current-out.json | 29 +
.../snapshots-intermediate1-out.json | 24 +
.../snapshots-intermediate2-out.json | 62 ++
.../snapshots-intermediate3-out.json | 61 ++
.../snapshots-noparent-out.json | 27 +
...hots-synthetic-checkpoint-current-out.json | 29 +
...ynthetic-checkpoint-intermediate1-out.json | 31 +
...ynthetic-checkpoint-intermediate2-out.json | 34 +
...ynthetic-checkpoint-intermediate3-out.json | 61 ++
...ots-synthetic-checkpoint-noparent-out.json | 27 +
tests/qemumonitorjsontest.c | 5 +-
.../qemustatusxml2xmldata/backup-pull-in.xml | 2 +-
.../blockjob-blockdev-in.xml | 8 +-
53 files changed, 3293 insertions(+), 151 deletions(-)
create mode 100644 tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.json
create mode 100644 tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.out
create mode 100644 tests/qemublocktestdata/bitmap/snapshots-synthetic-checkpoint.json
create mode 100644 tests/qemublocktestdata/bitmap/snapshots-synthetic-checkpoint.out
create mode 100644 tests/qemublocktestdata/bitmapblockcopy/basic-deep-out.json
create mode 100644 tests/qemublocktestdata/bitmapblockcopy/basic-shallow-out.json
create mode 100644 tests/qemublocktestdata/bitmapblockcopy/snapshots-deep-out.json
create mode 100644 tests/qemublocktestdata/bitmapblockcopy/snapshots-shallow-out.json
create mode 100644 tests/qemublocktestdata/checkpointdelete/basic-current-out.json
create mode 100644 tests/qemublocktestdata/checkpointdelete/basic-intermediate1-out.json
create mode 100644 tests/qemublocktestdata/checkpointdelete/basic-intermediate2-out.json
create mode 100644 tests/qemublocktestdata/checkpointdelete/basic-intermediate3-out.json
create mode 100644 tests/qemublocktestdata/checkpointdelete/basic-noparent-out.json
create mode 100644 tests/qemublocktestdata/checkpointdelete/snapshots-current-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-intermediate1-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-intermediate2-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-intermediate3-out.json
create mode 100644 tests/qemublocktestdata/checkpointdelete/snapshots-noparent-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-synthetic-checkpoint-current-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-synthetic-checkpoint-intermediate1-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-synthetic-checkpoint-intermediate2-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-synthetic-checkpoint-intermediate3-out.json
create mode 100644
tests/qemublocktestdata/checkpointdelete/snapshots-synthetic-checkpoint-noparent-out.json
--
2.24.1