From: John Snow <jsnow@redhat.com>
To: qemu-block@nongnu.org, qemu-devel@nongnu.org,
Markus Armbruster <armbru@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <fam@euphon.net>,
vsementsov@virtuozzo.com, Juan Quintela <quintela@redhat.com>,
Wen Congyang <wencongyang2@huawei.com>,
Xie Changlong <xiechanglong.d@gmail.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Max Reitz <mreitz@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4 01/18] qapi/block-core: Introduce BackupCommon
Date: Tue, 9 Jul 2019 21:36:19 -0400 [thread overview]
Message-ID: <fdd0230c-2524-7a15-d356-c37f2944cf6b@redhat.com> (raw)
In-Reply-To: <20190709232550.10724-2-jsnow@redhat.com>
On 7/9/19 7:25 PM, John Snow wrote:
> drive-backup and blockdev-backup have an awful lot of things in common
> that are the same. Let's fix that.
>
> I don't deduplicate 'target', because the semantics actually did change
> between each structure. Leave that one alone so it can be documented
> separately.
Sorry Markus, I forgot to adjust this. Pretend I wrote:
Where documentation was not identical, use the most up-to-date version.
For "speed", use Blockdev-Backup's version. For "sync", use
Drive-Backup's version.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> Reviewed-by: Max Reitz <mreitz@redhat.com>
> ---
> qapi/block-core.json | 103 ++++++++++++++-----------------------------
> 1 file changed, 33 insertions(+), 70 deletions(-)
>
> diff --git a/qapi/block-core.json b/qapi/block-core.json
> index 0d43d4f37c..0af3866015 100644
> --- a/qapi/block-core.json
> +++ b/qapi/block-core.json
> @@ -1315,32 +1315,23 @@
> 'data': { 'node': 'str', 'overlay': 'str' } }
>
> ##
> -# @DriveBackup:
> +# @BackupCommon:
> #
> # @job-id: identifier for the newly-created block job. If
> # omitted, the device name will be used. (Since 2.7)
> #
> # @device: the device name or node-name of a root node which should be copied.
> #
> -# @target: the target of the new image. If the file exists, or if it
> -# is a device, the existing file/device will be used as the new
> -# destination. If it does not exist, a new file will be created.
> -#
> -# @format: the format of the new destination, default is to
> -# probe if @mode is 'existing', else the format of the source
> -#
> # @sync: what parts of the disk image should be copied to the destination
> # (all the disk, only the sectors allocated in the topmost image, from a
> # dirty bitmap, or only new I/O).
> #
> -# @mode: whether and how QEMU should create a new image, default is
> -# 'absolute-paths'.
> -#
> -# @speed: the maximum speed, in bytes per second
> +# @speed: the maximum speed, in bytes per second. The default is 0,
> +# for unlimited.
> #
> # @bitmap: the name of dirty bitmap if sync is "incremental".
> # Must be present if sync is "incremental", must NOT be present
> -# otherwise. (Since 2.4)
> +# otherwise. (Since 2.4 (drive-backup), 3.1 (blockdev-backup))
> #
> # @compress: true to compress data, if the target format supports it.
> # (default: false) (since 2.8)
> @@ -1370,75 +1361,47 @@
> # I/O. If an error occurs during a guest write request, the device's
> # rerror/werror actions will be used.
> #
> +# Since: 4.2
> +##
> +{ 'struct': 'BackupCommon',
> + 'data': { '*job-id': 'str', 'device': 'str',
> + 'sync': 'MirrorSyncMode', '*speed': 'int',
> + '*bitmap': 'str', '*compress': 'bool',
> + '*on-source-error': 'BlockdevOnError',
> + '*on-target-error': 'BlockdevOnError',
> + '*auto-finalize': 'bool', '*auto-dismiss': 'bool' } }
> +
> +##
> +# @DriveBackup:
> +#
> +# @target: the target of the new image. If the file exists, or if it
> +# is a device, the existing file/device will be used as the new
> +# destination. If it does not exist, a new file will be created.
> +#
> +# @format: the format of the new destination, default is to
> +# probe if @mode is 'existing', else the format of the source
> +#
> +# @mode: whether and how QEMU should create a new image, default is
> +# 'absolute-paths'.
> +#
> # Since: 1.6
> ##
> { 'struct': 'DriveBackup',
> - 'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
> - '*format': 'str', 'sync': 'MirrorSyncMode',
> - '*mode': 'NewImageMode', '*speed': 'int',
> - '*bitmap': 'str', '*compress': 'bool',
> - '*on-source-error': 'BlockdevOnError',
> - '*on-target-error': 'BlockdevOnError',
> - '*auto-finalize': 'bool', '*auto-dismiss': 'bool' } }
> + 'base': 'BackupCommon',
> + 'data': { 'target': 'str',
> + '*format': 'str',
> + '*mode': 'NewImageMode' } }
>
> ##
> # @BlockdevBackup:
> #
> -# @job-id: identifier for the newly-created block job. If
> -# omitted, the device name will be used. (Since 2.7)
> -#
> -# @device: the device name or node-name of a root node which should be copied.
> -#
> # @target: the device name or node-name of the backup target node.
> #
> -# @sync: what parts of the disk image should be copied to the destination
> -# (all the disk, only the sectors allocated in the topmost image, or
> -# only new I/O).
> -#
> -# @speed: the maximum speed, in bytes per second. The default is 0,
> -# for unlimited.
> -#
> -# @bitmap: the name of dirty bitmap if sync is "incremental".
> -# Must be present if sync is "incremental", must NOT be present
> -# otherwise. (Since 3.1)
> -#
> -# @compress: true to compress data, if the target format supports it.
> -# (default: false) (since 2.8)
> -#
> -# @on-source-error: the action to take on an error on the source,
> -# default 'report'. 'stop' and 'enospc' can only be used
> -# if the block device supports io-status (see BlockInfo).
> -#
> -# @on-target-error: the action to take on an error on the target,
> -# default 'report' (no limitations, since this applies to
> -# a different block device than @device).
> -#
> -# @auto-finalize: When false, this job will wait in a PENDING state after it has
> -# finished its work, waiting for @block-job-finalize before
> -# making any block graph changes.
> -# When true, this job will automatically
> -# perform its abort or commit actions.
> -# Defaults to true. (Since 2.12)
> -#
> -# @auto-dismiss: When false, this job will wait in a CONCLUDED state after it
> -# has completely ceased all work, and awaits @block-job-dismiss.
> -# When true, this job will automatically disappear from the query
> -# list without user intervention.
> -# Defaults to true. (Since 2.12)
> -#
> -# Note: @on-source-error and @on-target-error only affect background
> -# I/O. If an error occurs during a guest write request, the device's
> -# rerror/werror actions will be used.
> -#
> # Since: 2.3
> ##
> { 'struct': 'BlockdevBackup',
> - 'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
> - 'sync': 'MirrorSyncMode', '*speed': 'int',
> - '*bitmap': 'str', '*compress': 'bool',
> - '*on-source-error': 'BlockdevOnError',
> - '*on-target-error': 'BlockdevOnError',
> - '*auto-finalize': 'bool', '*auto-dismiss': 'bool' } }
> + 'base': 'BackupCommon',
> + 'data': { 'target': 'str' } }
>
> ##
> # @blockdev-snapshot-sync:
>
next prev parent reply other threads:[~2019-07-10 1:39 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-09 23:25 [Qemu-devel] [PATCH v4 00/18] bitmaps: introduce 'bitmap' sync mode John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 01/18] qapi/block-core: Introduce BackupCommon John Snow
2019-07-10 1:36 ` John Snow [this message]
2019-07-10 4:11 ` Markus Armbruster
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 02/18] drive-backup: create do_backup_common John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 03/18] blockdev-backup: utilize do_backup_common John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 04/18] qapi: add BitmapSyncMode enum John Snow
2019-07-10 4:15 ` Markus Armbruster
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 05/18] block/backup: Add mirror sync mode 'bitmap' John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 06/18] block/backup: add 'never' policy to bitmap sync mode John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 07/18] hbitmap: Fix merge when b is empty, and result is not an alias of a John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 08/18] hbitmap: enable merging across granularities John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 09/18] block/dirty-bitmap: add bdrv_dirty_bitmap_merge_internal John Snow
2019-07-10 14:38 ` Max Reitz
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 10/18] block/dirty-bitmap: add bdrv_dirty_bitmap_get John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 11/18] block/backup: upgrade copy_bitmap to BdrvDirtyBitmap John Snow
2019-07-10 14:39 ` Max Reitz
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 12/18] block/backup: add 'always' bitmap sync policy John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 13/18] iotests: add testing shim for script-style python tests John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 14/18] iotests: teach run_job to cancel pending jobs John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 15/18] iotests: teach FilePath to produce multiple paths John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 16/18] iotests: Add virtio-scsi device helper John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 17/18] iotests: add test 257 for bitmap-mode backups John Snow
2019-07-10 14:45 ` Max Reitz
2019-07-11 1:51 ` John Snow
2019-07-09 23:25 ` [Qemu-devel] [PATCH v4 18/18] block/backup: loosen restriction on readonly bitmaps John Snow
2019-07-10 14:48 ` [Qemu-devel] [PATCH v4 00/18] bitmaps: introduce 'bitmap' sync mode Max Reitz
2019-07-10 17:21 ` John Snow
2019-07-15 20:00 ` John Snow
2019-07-22 12:17 ` Fabian Grünbichler
2019-07-22 17:21 ` John Snow
2019-07-23 9:47 ` Fabian Grünbichler
2019-07-23 16:58 ` John Snow
2019-07-24 8:41 ` Fabian Grünbichler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fdd0230c-2524-7a15-d356-c37f2944cf6b@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=fam@euphon.net \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@redhat.com \
--cc=vsementsov@virtuozzo.com \
--cc=wencongyang2@huawei.com \
--cc=xiechanglong.d@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).