From: John Snow <jsnow@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@parallels.com>,
qemu-devel@nongnu.org
Cc: kwolf@redhat.com, pbonzini@redhat.com, stefanha@redhat.com,
den@openvz.org
Subject: Re: [Qemu-devel] [PATCH RFC v2 7/8] migration: add dirty parameter
Date: Tue, 10 Feb 2015 16:32:08 -0500 [thread overview]
Message-ID: <54DA78D8.2030208@redhat.com> (raw)
In-Reply-To: <1422356197-5285-8-git-send-email-vsementsov@parallels.com>
On 01/27/2015 05:56 AM, Vladimir Sementsov-Ogievskiy wrote:
> Add dirty parameter to qmp-migrate command. If this parameter is true,
> migration/block.c will migrate dirty bitmaps. This parameter can be used
> without "blk" parameter to migrate only dirty bitmaps, skipping block
> migration.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@parallels.com>
> ---
> hmp-commands.hx | 12 +++++++-----
> hmp.c | 4 +++-
> include/migration/migration.h | 1 +
> migration/migration.c | 4 +++-
> qapi-schema.json | 7 ++++++-
> qmp-commands.hx | 5 ++++-
> savevm.c | 3 ++-
> 7 files changed, 26 insertions(+), 10 deletions(-)
>
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index a9be506..c16f93c 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -902,23 +902,25 @@ ETEXI
>
> {
> .name = "migrate",
> - .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
> - .params = "[-d] [-b] [-i] uri",
> + .args_type = "detach:-d,blk:-b,inc:-i,dirty:-D,uri:s",
> + .params = "[-d] [-b] [-i] [-D] uri",
> .help = "migrate to URI (using -d to not wait for completion)"
> "\n\t\t\t -b for migration without shared storage with"
> " full copy of disk\n\t\t\t -i for migration without "
> - "shared storage with incremental copy of disk "
> - "(base image shared between src and destination)",
> + "shared storage with incremental copy of disk\n\t\t\t"
> + " -D for migration of named dirty bitmaps as well\n\t\t\t"
> + " (base image shared between src and destination)",
> .mhandler.cmd = hmp_migrate,
> },
>
>
> STEXI
> -@item migrate [-d] [-b] [-i] @var{uri}
> +@item migrate [-d] [-b] [-i] [-D] @var{uri}
> @findex migrate
> Migrate to @var{uri} (using -d to not wait for completion).
> -b for migration with full copy of disk
> -i for migration with incremental copy of disk (base image is shared)
> + -D for migration of named dirty bitmaps
> ETEXI
>
> {
> diff --git a/hmp.c b/hmp.c
> index a269145..0b89ee8 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -1347,10 +1347,12 @@ void hmp_migrate(Monitor *mon, const QDict *qdict)
> int detach = qdict_get_try_bool(qdict, "detach", 0);
> int blk = qdict_get_try_bool(qdict, "blk", 0);
> int inc = qdict_get_try_bool(qdict, "inc", 0);
> + int dirty = qdict_get_try_bool(qdict, "dirty", 0);
> const char *uri = qdict_get_str(qdict, "uri");
> Error *err = NULL;
>
> - qmp_migrate(uri, !!blk, blk, !!inc, inc, false, false, &err);
> + qmp_migrate(uri, !!blk, blk, !!inc, inc, !!dirty, dirty,
> + false, false, &err);
> if (err) {
> monitor_printf(mon, "migrate: %s\n", error_get_pretty(err));
> error_free(err);
> diff --git a/include/migration/migration.h b/include/migration/migration.h
> index 3cb5ba8..48d71d3 100644
> --- a/include/migration/migration.h
> +++ b/include/migration/migration.h
> @@ -37,6 +37,7 @@
> struct MigrationParams {
> bool blk;
> bool shared;
> + bool dirty;
> };
>
> typedef struct MigrationState MigrationState;
> diff --git a/migration/migration.c b/migration/migration.c
> index c49a05a..e7bb7f3 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -404,7 +404,8 @@ void migrate_del_blocker(Error *reason)
> }
>
> void qmp_migrate(const char *uri, bool has_blk, bool blk,
> - bool has_inc, bool inc, bool has_detach, bool detach,
> + bool has_inc, bool inc, bool has_dirty, bool dirty,
> + bool has_detach, bool detach,
> Error **errp)
> {
> Error *local_err = NULL;
> @@ -414,6 +415,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
>
> params.blk = has_blk && blk;
> params.shared = has_inc && inc;
> + params.dirty = has_dirty && dirty;
>
> if (s->state == MIG_STATE_ACTIVE || s->state == MIG_STATE_SETUP ||
> s->state == MIG_STATE_CANCELLING) {
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 1475f69..1d10d6b 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -1656,12 +1656,17 @@
> # @detach: this argument exists only for compatibility reasons and
> # is ignored by QEMU
> #
> +# @dirty: #optional do dirty-bitmaps migration (can be used with or without
> +# @blk parameter)
> +# (since 2.3)
> +#
> # Returns: nothing on success
> #
> # Since: 0.14.0
> ##
> { 'command': 'migrate',
> - 'data': {'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*detach': 'bool' } }
> + 'data': { 'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*dirty': 'bool',
> + '*detach': 'bool' } }
>
> # @xen-save-devices-state:
> #
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index 8065715..f8e50ac 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -610,7 +610,7 @@ EQMP
>
> {
> .name = "migrate",
> - .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
> + .args_type = "detach:-d,blk:-b,inc:-i,dirty:-D,uri:s",
> .mhandler.cmd_new = qmp_marshal_input_migrate,
> },
>
> @@ -624,6 +624,7 @@ Arguments:
>
> - "blk": block migration, full disk copy (json-bool, optional)
> - "inc": incremental disk copy (json-bool, optional)
> +- "dirty": migrate named dirty bitmaps (json-bool, optional)
> - "uri": Destination URI (json-string)
>
> Example:
> @@ -638,6 +639,8 @@ Notes:
> (2) All boolean arguments default to false
> (3) The user Monitor's "detach" argument is invalid in QMP and should not
> be used
> +(4) The "dirty" argument may be used without "blk", to migrate only dirty
> + bitmaps
>
> EQMP
>
> diff --git a/savevm.c b/savevm.c
> index 08ec678..a598d1d 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -784,7 +784,8 @@ static int qemu_savevm_state(QEMUFile *f)
> int ret;
> MigrationParams params = {
> .blk = 0,
> - .shared = 0
> + .shared = 0,
> + .dirty = 0
> };
>
> if (qemu_savevm_state_blocked(NULL)) {
>
I'll defer to Eric's judgment here; It looks like you have already
re-spun but were waiting on my lethargy to send out to the ML again.
next prev parent reply other threads:[~2015-02-10 21:32 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-27 10:56 [Qemu-devel] [PATCH RFC v2 0/8] Dirty bitmaps migration Vladimir Sementsov-Ogievskiy
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 1/8] qmp: print dirty bitmap Vladimir Sementsov-Ogievskiy
2015-01-27 16:17 ` Eric Blake
2015-01-27 16:23 ` Vladimir Sementsov-Ogievskiy
2015-02-10 21:28 ` John Snow
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 2/8] hbitmap: serialization Vladimir Sementsov-Ogievskiy
2015-02-10 21:29 ` John Snow
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 3/8] block: BdrvDirtyBitmap serialization interface Vladimir Sementsov-Ogievskiy
2015-02-10 21:29 ` John Snow
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 4/8] block: add dirty-dirty bitmaps Vladimir Sementsov-Ogievskiy
2015-02-10 21:30 ` John Snow
2015-02-12 10:51 ` Vladimir Sementsov-Ogievskiy
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 5/8] block: add bdrv_dirty_bitmap_enabled() Vladimir Sementsov-Ogievskiy
2015-02-10 21:30 ` John Snow
2015-02-12 10:54 ` Vladimir Sementsov-Ogievskiy
2015-02-12 16:22 ` John Snow
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 6/8] block: add bdrv_next_dirty_bitmap() Vladimir Sementsov-Ogievskiy
2015-02-10 21:31 ` John Snow
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 7/8] migration: add dirty parameter Vladimir Sementsov-Ogievskiy
2015-01-27 16:20 ` Eric Blake
2015-02-04 14:42 ` Vladimir Sementsov-Ogievskiy
2015-02-10 21:32 ` John Snow [this message]
2015-01-27 10:56 ` [Qemu-devel] [PATCH RFC v2 8/8] migration: add migration/dirty-bitmap.c Vladimir Sementsov-Ogievskiy
2015-02-10 21:33 ` John Snow
2015-02-13 8:19 ` Vladimir Sementsov-Ogievskiy
2015-02-13 9:06 ` Vladimir Sementsov-Ogievskiy
2015-02-13 17:32 ` John Snow
2015-02-13 17:41 ` Vladimir Sementsov-Ogievskiy
2015-02-13 20:22 ` John Snow
2015-02-16 12:06 ` Vladimir Sementsov-Ogievskiy
2015-02-16 18:18 ` John Snow
2015-02-16 18:22 ` Dr. David Alan Gilbert
2015-02-17 8:54 ` Vladimir Sementsov-Ogievskiy
2015-02-17 18:45 ` John Snow
2015-02-17 19:12 ` Eric Blake
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=54DA78D8.2030208@redhat.com \
--to=jsnow@redhat.com \
--cc=den@openvz.org \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vsementsov@parallels.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.