[libvirt RFC 00/24] basic snapshot delete implementation

Pavel Hrdina posted 24 patches 1 year, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1661271812.git.phrdina@redhat.com
src/conf/snapshot_conf.c     |   5 +
src/conf/snapshot_conf.h     |   1 +
src/qemu/qemu_backup.c       |   1 +
src/qemu/qemu_block.c        | 356 ++++++++++++++++
src/qemu/qemu_block.h        |  30 ++
src/qemu/qemu_blockjob.c     |  13 +-
src/qemu/qemu_blockjob.h     |   1 +
src/qemu/qemu_domain.c       |  95 +----
src/qemu/qemu_domain.h       |   9 -
src/qemu/qemu_driver.c       | 306 +-------------
src/qemu/qemu_monitor.c      |  21 +-
src/qemu/qemu_monitor.h      |   8 +-
src/qemu/qemu_monitor_json.c |  26 +-
src/qemu/qemu_monitor_json.h |   8 +-
src/qemu/qemu_snapshot.c     | 764 +++++++++++++++++++++++++++++++----
src/qemu/qemu_snapshot.h     |   4 +
tests/qemumonitorjsontest.c  |   2 +-
17 files changed, 1151 insertions(+), 499 deletions(-)
[libvirt RFC 00/24] basic snapshot delete implementation
Posted by Pavel Hrdina 1 year, 8 months ago
I'm sending it as RFC even though it's somehow completed and works, it
probably needs some documentation and most likely unit testing.

This implements virDomainSnapshotDelete API to support external
snapshots. The support doesn't include flags
VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN and
VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY as it would add more complexity
and IMHO these flags should not existed at all.

The last patch is just here to show how we could support deleting
external snapshot if all children are internal only, without this patch
the user would have to call children-only and then with another call
delete the external snapshot itself.

There are some limitation that will be needing the mentioned
documentation. If parent snapshot is internal the external snapshot
cannot be deleted, workaround is to delete any internal parent snapshots
and after that the external can be deleted.

Pavel Hrdina (24):
  qemu_block: extract block commit code to separate function
  qemu_block: move qemuDomainBlockPivot out of qemu_driver
  qemu_block: extract qemuBlockCommit impl to separate function
  qemu_block: add sync option to qemuBlockCommitImpl
  qemu_monitor: introduce qemuMonitorJobFinalize
  qemu_monitor: allow setting autofinalize for block commit
  qemu_block: introduce qemuBlockFinalize
  qemu_blockjob: process QEMU_MONITOR_JOB_STATUS_PENDING signal
  qemu_snapshot: refactor qemuSnapshotDelete
  qemu_snapshot: extract single snapshot deletion to separate function
  qemu_snapshot: extract children snapshot deletion to separate function
  qemu_snapshot: rework snapshot children deletion
  qemu_snapshot: move snapshot discard out of qemu_domain.c
  qemu_snapshot: introduce qemuSnapshotDiscardMetadata
  qemu_snapshot: call qemuSnapshotDiscardMetadata from
    qemuSnapshotDiscard
  qemu_snapshot: pass update_parent into qemuSnapshotDiscardMetadata
  qemu_snapshot: move metadata changes to qemuSnapshotDiscardMetadata
  qemu_snapshot: introduce qemuSnapshotDeleteValidate function
  qemu_snapshot: refactor validation of snapshot delete
  qemu_snapshot: prepare data for external snapshot deletion
  qemu_snapshot: implement deletion of external snapshot
  qemu_snapshot: update metadata when deleting snapshots
  qemu_snapshot: when deleting snapshot invalidate parent snapshot
  qemu_snapshot: allow deletion of external snapshot with internal
    snapshot children

 src/conf/snapshot_conf.c     |   5 +
 src/conf/snapshot_conf.h     |   1 +
 src/qemu/qemu_backup.c       |   1 +
 src/qemu/qemu_block.c        | 356 ++++++++++++++++
 src/qemu/qemu_block.h        |  30 ++
 src/qemu/qemu_blockjob.c     |  13 +-
 src/qemu/qemu_blockjob.h     |   1 +
 src/qemu/qemu_domain.c       |  95 +----
 src/qemu/qemu_domain.h       |   9 -
 src/qemu/qemu_driver.c       | 306 +-------------
 src/qemu/qemu_monitor.c      |  21 +-
 src/qemu/qemu_monitor.h      |   8 +-
 src/qemu/qemu_monitor_json.c |  26 +-
 src/qemu/qemu_monitor_json.h |   8 +-
 src/qemu/qemu_snapshot.c     | 764 +++++++++++++++++++++++++++++++----
 src/qemu/qemu_snapshot.h     |   4 +
 tests/qemumonitorjsontest.c  |   2 +-
 17 files changed, 1151 insertions(+), 499 deletions(-)

-- 
2.37.2