On Wed, Feb 06, 2019 at 01:17:58PM -0600, Eric Blake wrote: > The following is the latest version of my API proposal for > incremental backups, and follows along from the demo I presented > as part of my KVM Forum 2018 talk: > https://kvmforum2018.sched.com/event/FzuB/facilitating-incremental-backup-eric-blake-red-hat > > The patches are also available via https://repo.or.cz/libvirt/ericb.git > at the tag backup-v4. > > Integration with external snapshots is still not included in these > patches, although I have been playing more with that locally, and > I still haven't gotten a working demonstration of a push-mode > incremental backup. > > At this point, I'm posting mainly because there have been enough > changes in qemu (the backup APIs are now stable! and in qemu.git > in time for 4.0) and libvirt (several releases and code cleanups > in between, such that the v3 no longer applies easily), while I > continue to work locally on more features, addressing the review > comments I got on v3, and remove the 'wip' tag on several of the > later patches. > > Among other things, I still haven't determined how we want to > integrate checkpoints with external snapshots; we could either have: > > virDomainSnapshotCreateXML("<domainsnapshot>...") # existing > virDomainBackupBegin("<domainbackup>...", "<domaincheckpoint>...") # this series > virDomainSnapshotCheckpointCreateXML("<domainsnapshot>...", "<domaincheckpoint>...") # new A slightly related question: when these new APIs (thanks for working on them!) are merged, am I right in assuming that they should be able to "replace" the existing (and provide additional): virDomainBlockRebase(); and virDomainBlockCopy() ... _provided_ that an application is adjusted to using libvirt that is new enough to drive QEMU's '-blockdev', QMP `blockdev-add` et al? Or is that (the new APIs being backward-compatible with blockRebase() and blockCopy()) an explicit non-goal? I'm only this out of curiosity. > or to make checkpoint creation part of the snapshot and backup XML, as in: > > virDomainSnapshotCreateXML("<domainsnapshot><domaincheckpoint>...</domainsnapshot>") # extension of existing > virDomainBackupBegin("<domainbackup><domaincheckpoint>...</domainbackup>") # tweak to this series > > I'm also planning to add an API to query which job ids are currently > running (right now, the code only supports one job at a time, and > always calls it job 1, but that is not future-friendly) and an update > to the redefine XML command to make it easier to redefine multiple > checkpoints in one API call. [...] -- /kashyap