aboutsummaryrefslogtreecommitdiff
path: root/qapi
diff options
context:
space:
mode:
authorVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>2024-03-13 18:28:21 +0300
committerVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>2024-05-28 15:52:15 +0300
commit0fd05c8d807dc7cd25b2f9bf32dd4135c94acb7a (patch)
tree3a77f8f16cedb241024faafc1819f1b0a1784110 /qapi
parent006e845b5a4cbb1f93a2e8ed22fa648b9d7e4182 (diff)
downloadqemu-0fd05c8d807dc7cd25b2f9bf32dd4135c94acb7a.zip
qemu-0fd05c8d807dc7cd25b2f9bf32dd4135c94acb7a.tar.gz
qemu-0fd05c8d807dc7cd25b2f9bf32dd4135c94acb7a.tar.bz2
qapi: blockdev-backup: add discard-source parameter
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 <vsementsov@yandex-team.ru> Reviewed-by: Fiona Ebner <f.ebner@proxmox.com> Tested-by: Fiona Ebner <f.ebner@proxmox.com> Acked-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20240313152822.626493-5-vsementsov@yandex-team.ru> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Diffstat (limited to 'qapi')
-rw-r--r--qapi/block-core.json4
1 files changed, 4 insertions, 0 deletions
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 746d169..df5e07d 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 have already 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' ] } } }