diff options
author | Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> | 2024-03-13 18:28:21 +0300 |
---|---|---|
committer | Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> | 2024-05-28 15:52:15 +0300 |
commit | 0fd05c8d807dc7cd25b2f9bf32dd4135c94acb7a (patch) | |
tree | 3a77f8f16cedb241024faafc1819f1b0a1784110 /qapi | |
parent | 006e845b5a4cbb1f93a2e8ed22fa648b9d7e4182 (diff) | |
download | qemu-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.json | 4 |
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' ] } } } |