Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> writes: > We are on the way to implement internal-backup with fleecing scheme, > which includes backup job copying from fleecing block driver node > (which is target of copy-before-write filter) to final target of > backup. This job doesn't need own filter, as fleecing block driver node > is a kind of snapshot, it's immutable from reader point of view. > > Let's add a parameter for backup to not insert filter but instead > unshare writes on source. This way backup job becomes a simple copying > process. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > --- > qapi/block-core.json | 12 +++++++- > include/block/block_int.h | 1 + > block/backup.c | 61 +++++++++++++++++++++++++++++++++++---- > block/replication.c | 2 +- > blockdev.c | 1 + > 5 files changed, 70 insertions(+), 7 deletions(-) > > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 8a333136f5..995ca16a5e 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -1391,6 +1391,15 @@ > # above node specified by @drive. If this option is not > given, > # a node name is autogenerated. (Since: 4.2) > # > +# @immutable-source: If true, assume source is immutable and don't insert > filter
Suggest comma after immutable. > +# as no copy-before-write operations are needed. It will > +# fail if there are existing writers on source node, as > well, > +# any attempt to add writer to source node during backup > will > +# fail. @filter-node-name must not be set. Suggest to split the sentence like "... fail if there are existing writers on source node. Any attempt ... will also fail." > +# If false, insert copy-before-write filter above source > node > +# (see also @filter-node-name parameter). > +# Default is false. (Since 6.2) > +# > # @x-perf: Performance options. (Since 6.0) > # > # Note: @on-source-error and @on-target-error only affect background > @@ -1407,7 +1416,8 @@ > '*on-source-error': 'BlockdevOnError', > '*on-target-error': 'BlockdevOnError', > '*auto-finalize': 'bool', '*auto-dismiss': 'bool', > - '*filter-node-name': 'str', '*x-perf': 'BackupPerf' } } > + '*filter-node-name': 'str', '*immutable-source': 'bool', > + '*x-perf': 'BackupPerf' } } > > ## > # @DriveBackup: [...]