On 13.03.24 19:08, Markus Armbruster wrote:
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"?

Oh, right


+#     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>


Thanks!

--
Best regards,
Vladimir


Reply via email to