All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <fam@euphon.net>,
	vsementsov@virtuozzo.com, qemu-block@nongnu.org,
	Juan Quintela <quintela@redhat.com>,
	Wen Congyang <wencongyang2@huawei.com>,
	Xie Changlong <xiechanglong.d@gmail.com>,
	qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Max Reitz <mreitz@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 01/18] qapi/block-core: Introduce BackupCommon
Date: Fri, 05 Jul 2019 16:14:32 +0200	[thread overview]
Message-ID: <87sgrkin5j.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20190703215542.16123-2-jsnow@redhat.com> (John Snow's message of "Wed, 3 Jul 2019 17:55:25 -0400")

John Snow <jsnow@redhat.com> writes:

> 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.
>
> Signed-off-by: John Snow <jsnow@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..7b23efcf13 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).

This is DriveBackup's wording.  Blockdev lacks "from a dirty bitmap, ".
Is this a doc fix?

>  #
> -# @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.

This is Blockdev's wording.  DriveBackup lacks "the default is 0, for
unlimited."  Is this a doc fix?

>  #
>  # @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), 3.1 (Blockdev))

I second Max's request to say (drive-backup) and (blockdev-backup),
strongly.

>  #
>  # @compress: true to compress data, if the target format supports it.
>  #            (default: false) (since 2.8)
> @@ -1372,73 +1363,45 @@
>  #
>  # Since: 1.6

BackupCommon is actually since 4.2.

The type doesn't appear in the external interface (only its extensions
DriveBackup and BlockdevBackup do), so documenting "since" is actually
pointless.  However, we blindly document "since" for *everything*,
simply because we don't want to waste time on deciding whether we have
to.

>  ##
> +{ '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:


  parent reply	other threads:[~2019-07-05 14:19 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-03 21:55 [Qemu-devel] [PATCH v2 00/18] bitmaps: introduce 'bitmap' sync mode John Snow
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 01/18] qapi/block-core: Introduce BackupCommon John Snow
2019-07-04 14:25   ` Max Reitz
2019-07-05 14:14   ` Markus Armbruster [this message]
2019-07-05 16:37     ` John Snow
2019-07-06  4:03       ` Markus Armbruster
2019-07-08 17:30         ` John Snow
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 02/18] drive-backup: create do_backup_common John Snow
2019-07-04 15:06   ` Max Reitz
2019-07-05 17:20     ` John Snow
2019-07-05 17:35     ` John Snow
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 03/18] blockdev-backup: utilize do_backup_common John Snow
2019-07-04 15:08   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 04/18] qapi: add BitmapSyncMode enum John Snow
2019-07-04 15:14   ` Max Reitz
2019-07-05 14:18   ` Markus Armbruster
2019-07-05 16:39     ` John Snow
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 05/18] block/backup: Add mirror sync mode 'bitmap' John Snow
2019-07-04 15:30   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 06/18] block/backup: add 'never' policy to bitmap sync mode John Snow
2019-07-04 15:34   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 07/18] hbitmap: Fix merge when b is empty, and result is not an alias of a John Snow
2019-07-04 15:36   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 08/18] hbitmap: enable merging across granularities John Snow
2019-07-04 15:40   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 09/18] block/dirty-bitmap: add bdrv_dirty_bitmap_merge_internal John Snow
2019-07-04 16:49   ` Max Reitz
2019-07-05 16:45     ` John Snow
2019-07-08 11:44       ` Max Reitz
2019-07-08 18:24         ` John Snow
2019-07-08 18:33           ` Max Reitz
2019-07-08 21:04             ` John Snow
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 10/18] block/dirty-bitmap: add bdrv_dirty_bitmap_get John Snow
2019-07-04 17:01   ` Max Reitz
2019-07-05 18:03     ` John Snow
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 11/18] block/backup: upgrade copy_bitmap to BdrvDirtyBitmap John Snow
2019-07-04 17:29   ` Max Reitz
2019-07-05 16:52     ` John Snow
2019-07-08 12:02       ` Max Reitz
2019-07-08 18:32         ` John Snow
2019-07-08 18:42           ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 12/18] block/backup: add 'always' bitmap sync policy John Snow
2019-07-04 17:43   ` Max Reitz
2019-07-04 18:05     ` Max Reitz
2019-07-05 16:59       ` John Snow
2019-07-08 12:04         ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 13/18] iotests: add testing shim for script-style python tests John Snow
2019-07-04 17:47   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 14/18] iotests: teach run_job to cancel pending jobs John Snow
2019-07-04 17:48   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 15/18] iotests: teach FilePath to produce multiple paths John Snow
2019-07-04 17:50   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 16/18] iotests: Add virtio-scsi device helper John Snow
2019-07-04 17:52   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 17/18] iotests: add test 257 for bitmap-mode backups John Snow
2019-07-04 17:56   ` Max Reitz
2019-07-03 21:55 ` [Qemu-devel] [PATCH v2 18/18] block/backup: loosen restriction on readonly bitmaps John Snow
2019-07-04 17:58   ` Max Reitz
2019-07-04  1:50 ` [Qemu-devel] [PATCH v2 00/18] bitmaps: introduce 'bitmap' sync mode no-reply
2019-07-04  4:13   ` John Snow
2019-07-04  2:05 ` no-reply
2019-07-04 15:07 ` no-reply
2019-07-04 18:58 ` no-reply

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=87sgrkin5j.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=fam@euphon.net \
    --cc=jsnow@redhat.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.