Vladimir Sementsov-Ogievskiy <vsement...@yandex-team.ru> writes: > Add a parameter that enables discard-after-copy. That is mostly useful > in "push backup with fleecing" scheme, when source is snapshot-access > format driver node, based on copy-before-write filter snapshot-access > API: > > [guest] [snapshot-access] ~~ blockdev-backup ~~> [backup target] > | | > | root | file > v v > [copy-before-write] > | | > | file | target > v v > [active disk] [temp.img] > > In this case discard-after-copy does two things: > > - discard data in temp.img to save disk space > - avoid further copy-before-write operation in discarded area > > Note that we have to declare WRITE permission on source in > copy-before-write filter, for discard to work. Still we can't take it > unconditionally, as it will break normal backup from RO source. So, we > have to add a parameter and pass it thorough bdrv_open flags. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@yandex-team.ru> > Reviewed-by: Fiona Ebner <f.eb...@proxmox.com> > Tested-by: Fiona Ebner <f.eb...@proxmox.com>
[...] > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 1874f880a8..2ef52ae9a7 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -1610,6 +1610,9 @@ > # node specified by @drive. If this option is not given, a node > # name is autogenerated. (Since: 4.2) > # > +# @discard-source: Discard blocks on source which are already copied "have been copied"? > +# to the target. (Since 9.1) > +# > # @x-perf: Performance options. (Since 6.0) > # > # Features: > @@ -1631,6 +1634,7 @@ > '*on-target-error': 'BlockdevOnError', > '*auto-finalize': 'bool', '*auto-dismiss': 'bool', > '*filter-node-name': 'str', > + '*discard-source': 'bool', > '*x-perf': { 'type': 'BackupPerf', > 'features': [ 'unstable' ] } } } QAPI schema Acked-by: Markus Armbruster <arm...@redhat.com>