[PATCH 00/19] qemu: backup: Add support for checkpoint deletion and block copy with checkpoints

Peter Krempa pkrempa at redhat.com
Fri Jan 31 14:31:04 UTC 2020


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




More information about the libvir-list mailing list