From patchwork Thu Apr 5 10:47:57 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Orit Wasserman X-Patchwork-Id: 151240 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 9B555B7094 for ; Sat, 7 Apr 2012 04:24:58 +1000 (EST) Received: from localhost ([::1]:39097 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFkIF-0006By-CI for incoming@patchwork.ozlabs.org; Thu, 05 Apr 2012 06:51:55 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34506) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFkHb-0004j8-2B for qemu-devel@nongnu.org; Thu, 05 Apr 2012 06:51:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SFkHA-0005Ay-Ek for qemu-devel@nongnu.org; Thu, 05 Apr 2012 06:51:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:32230) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFkHA-0005AE-2u for qemu-devel@nongnu.org; Thu, 05 Apr 2012 06:50:48 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q35AoQTt031314 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 5 Apr 2012 06:50:26 -0400 Received: from dhcp-1-120.tlv.redhat.com (vpn-201-166.tlv.redhat.com [10.35.201.166]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q35AnC1j024561; Thu, 5 Apr 2012 06:50:23 -0400 From: Orit Wasserman To: qemu-devel@nongnu.org Date: Thu, 5 Apr 2012 13:47:57 +0300 Message-Id: <1333622879-12055-9-git-send-email-owasserm@redhat.com> In-Reply-To: <1333622879-12055-1-git-send-email-owasserm@redhat.com> References: <1333622879-12055-1-git-send-email-owasserm@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.132.183.28 Cc: aliguori@us.ibm.com, quintela@redhat.com, stefanha@gmail.com, blauwirbel@gmail.com, Orit Wasserman , avi@redhat.com Subject: [Qemu-devel] [PATCH v8 08/10] Add migration capabilites X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Add migration capabiltes that can be queried by the management. The managment can query to source and the destination in order to verify both support some maigration capability (currently only XBZRLE). Signed-off-by: Orit Wasserman --- hmp.c | 18 ++++++++++++++++++ hmp.h | 1 + migration.c | 11 +++++++++++ monitor.c | 7 +++++++ qapi-schema.json | 24 ++++++++++++++++++++++++ qmp-commands.hx | 24 ++++++++++++++++++++++++ savevm.c | 2 +- 7 files changed, 86 insertions(+), 1 deletions(-) diff --git a/hmp.c b/hmp.c index c2f8c31..186a119 100644 --- a/hmp.c +++ b/hmp.c @@ -156,6 +156,24 @@ void hmp_info_migrate(Monitor *mon) qapi_free_MigrationInfo(info); } +void hmp_info_migration_caps(Monitor *mon) +{ + MigrationCapList *caps_list, *cap; + + caps_list = qmp_query_migration_caps(NULL); + if (!caps_list) { + monitor_printf(mon, "No migration capabilities found\n"); + return; + } + + for (cap = caps_list; cap; cap = cap->next) { + monitor_printf(mon, "%s\n", cap->value->name); + } + + qapi_free_MigrationCapList(caps_list); + +} + void hmp_info_cpus(Monitor *mon) { CpuInfoList *cpu_list, *cpu; diff --git a/hmp.h b/hmp.h index 8807853..1c53d35 100644 --- a/hmp.h +++ b/hmp.h @@ -25,6 +25,7 @@ void hmp_info_uuid(Monitor *mon); void hmp_info_chardev(Monitor *mon); void hmp_info_mice(Monitor *mon); void hmp_info_migrate(Monitor *mon); +void hmp_info_migration_caps(Monitor *mon); void hmp_info_cpus(Monitor *mon); void hmp_info_block(Monitor *mon); void hmp_info_blockstats(Monitor *mon); diff --git a/migration.c b/migration.c index 66238de..db8c3d8 100644 --- a/migration.c +++ b/migration.c @@ -161,6 +161,17 @@ MigrationInfo *qmp_query_migrate(Error **errp) return info; } +MigrationCapList *qmp_query_migration_caps(Error **errp) +{ + MigrationCapList *caps_list = g_malloc0(sizeof(*caps_list)); + + caps_list->value = g_malloc(sizeof(*caps_list->value)); + caps_list->value->name = g_strdup("uleb"); + caps_list->next = NULL; + + return caps_list; +} + /* shared migration helpers */ static int migrate_fd_cleanup(MigrationState *s) diff --git a/monitor.c b/monitor.c index 8946a10..ff434e0 100644 --- a/monitor.c +++ b/monitor.c @@ -2558,6 +2558,13 @@ static mon_cmd_t info_cmds[] = { .mhandler.info = hmp_info_migrate, }, { + .name = "migration_caps", + .args_type = "", + .params = "", + .help = "show migration capabilties", + .mhandler.info = hmp_info_migration_caps, + }, + { .name = "balloon", .args_type = "", .params = "", diff --git a/qapi-schema.json b/qapi-schema.json index 8b1c78a..e49ec43 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -276,6 +276,30 @@ { 'command': 'query-migrate', 'returns': 'MigrationInfo' } ## +# @MigrationCap +# +# Information about current migration capabilites. +# +# @xbzrle: true if the current migration supports xbzrle +# +# Since: 1.1 +## +{ 'type': 'MigrationCap', + 'data': { 'name': 'str'} } + +## +# @query-migration-caps +# +# Returns information about current migration process capabilties. +# +# Returns: @MigrationCap +# +# Since: 1.1 +## +{ 'command': 'query-migration-caps', 'returns': ['MigrationCap'] } + + +## # @MouseInfo: # # Information about a mouse device. diff --git a/qmp-commands.hx b/qmp-commands.hx index 5d3714f..c21ec1c 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -2073,6 +2073,30 @@ EQMP }, SQMP +query-migration-caps +------- + +Query migration capabilties + +- "xbzrle": xbzrle support + +Arguments: + +Example: + +-> { "execute": "query-migration-caps"} +<- { "return": { "xbzrle" : true } } + +EQMP + + { + .name = "query_migration_caps", + .args_type = "", + .mhandler.cmd_new = qmp_marshal_input_query_migration_caps, + }, + + +SQMP query-balloon ------------- diff --git a/savevm.c b/savevm.c index fbf1903..3c0b7cc 100644 --- a/savevm.c +++ b/savevm.c @@ -1573,7 +1573,7 @@ int qemu_savevm_state_begin(QEMUFile *f, } se->set_params(params, se->opaque); } - + qemu_put_be32(f, QEMU_VM_FILE_MAGIC); qemu_put_be32(f, QEMU_VM_FILE_VERSION);