From patchwork Fri Jul 21 14:49:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Het Gala X-Patchwork-Id: 1810967 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=proofpoint20171006 header.b=CCNoIWq/; dkim=pass (2048-bit key; unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=selector1 header.b=gctETqcX; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R6st045Dvz1yYc for ; Sat, 22 Jul 2023 00:50:16 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qMrRp-0002z4-0K; Fri, 21 Jul 2023 10:49:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qMrRj-0002iE-7r for qemu-devel@nongnu.org; Fri, 21 Jul 2023 10:49:31 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qMrRh-0004m4-CL for qemu-devel@nongnu.org; Fri, 21 Jul 2023 10:49:30 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 36LBo1b3027837; Fri, 21 Jul 2023 07:49:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= from:to:cc:subject:date:message-id:references:in-reply-to :content-type:content-id:content-transfer-encoding:mime-version; s=proofpoint20171006; bh=JXLHqTV6sn5nvsSbIcczXz3Ezhv3xr8Tj/y1wI PCOZw=; b=CCNoIWq/E/tayAn/wZNjmj71O7/Lv4PuopxkgL3M1Di3f2OSVeJIEi nvWtoqE3L4CEG3hYBn1NVP4usVYoM7epBhNCxscEnWoaOje3w7Fcg0hUWkKwDHi/ B6qJTaqR0ALD2DSGi7EDjQvO0D4LTy4HrMCm1FqY7HhMs/EMx8y7rN1MclKsQDCc WBfRf8b0J9nCDs6WMXT7sCHskSns/KPFiOH2rREY31WDUK3FpFeXmBdeM3MKAkwA Vp12UCd/D32BxIo1fSKKarNmK0ZYHfUSQI2CCPvM2qyX3qqFztAubDHpGe6labL9 UdW5J6bBBtWsWivLr9STd1zFTpy2wS6Q== Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2044.outbound.protection.outlook.com [104.47.51.44]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 3rx319phvh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Jul 2023 07:49:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YUfny+LK2g01Et899KMUb81C5NyPEQ/P+TigDZySuY399NmkUhL+qCWTb7dePfTX6Sd7l/a3MD0bfRlhRs0priebPB6reUKvpqZDo6GWmovJ+ZQrfy0hdVuQf13Kx/Z+ogAtUtfXBNQPBvS8vk+Tz1ArGU/ZqAnOhDyZEHVu0ubQtGiEKLEBkwEHIOhE+IWzGehDo395OFDchLbHTO/fZGY0DpGwFpafSQX8cmE5BnijgDJ4sDj53C076Q5e9fsz6PCnIGku6/O4wtZnGLTWEfSV2h8flA1psJ7bU3vSHZCRYd7VKjXfbj1Qk5ILKVE1Xszr8t2Mo4WYocGXfU24Yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JXLHqTV6sn5nvsSbIcczXz3Ezhv3xr8Tj/y1wIPCOZw=; b=l4EOOtUXuaahvNo5E0WL3/AI1B73AGkO6YSZKef9dpo0yJmftLaTGDgVI4XynnMJe4UvCXU0TF0D/7A/Njthr0J0C1vd8srOHvV3NdJnVyJD0Zpx2Vz45q5sFEpGiJ2DItF3L8eLla63hkCR0aOO49t1v+Spuw+LS7X5SoPW21f+D5DAQJX7a0dr/1BNkjTiqAGASfopv0RxkxQNtc1r0EBHaP3Q3qJsLDq+NSqGlQZMHUsDYM4HnKQB6HED8jkYUfFQLhtSmxNlQSmSjFCwATkLYXe4MDh574dH1Gt6WSyXZ1b0Mt7GN6kSJHT6HPHNyH+nyc5qDrOJp/zVVE6tJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JXLHqTV6sn5nvsSbIcczXz3Ezhv3xr8Tj/y1wIPCOZw=; b=gctETqcXMmcnYqIuZAlL7TNpDqaNqimUfHVFG7YtboHsVOkQ4S/mVDILyfNENKFdrRFzjcdMUOSA9fPNMvY4h5E2Okwp5oGU+S3TDDBrqYz8r7cyGf+7xfIl9aT6kR5O6i/7mTcMuhTETjH3uR1gDXIHTlpEJIO9kraRjQGBx8ru9uBcFwYjRbivaTOselOXFHmu49iG8OFeRVQZSQVxuTr9ar2BJcu1ZEEaluvd2Ok9Jz/qMVWdyH2A7uE9NuF0B1CTlRyG4fbniRp9c43lz3tBCbGV9b4yudOA39v7LfzH2i5Wl4Gg3xkwfe1G+ESbS+dCEqoMPyON2ER3ehG4hQ== Received: from BYAPR02MB4343.namprd02.prod.outlook.com (2603:10b6:a03:57::18) by SA2PR02MB7561.namprd02.prod.outlook.com (2603:10b6:806:140::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.24; Fri, 21 Jul 2023 14:49:24 +0000 Received: from BYAPR02MB4343.namprd02.prod.outlook.com ([fe80::89a1:d75c:813:618e]) by BYAPR02MB4343.namprd02.prod.outlook.com ([fe80::89a1:d75c:813:618e%7]) with mapi id 15.20.6609.022; Fri, 21 Jul 2023 14:49:24 +0000 From: Het Gala To: "qemu-devel@nongnu.org" CC: Prerna Saxena , "quintela@redhat.com" , "dgilbert@redhat.com" , "pbonzini@redhat.com" , "berrange@redhat.com" , "armbru@redhat.com" , "eblake@redhat.com" , Manish Mishra , Aravind Retnakaran , Het Gala Subject: [PATCH v9 02/10] migration: convert migration 'uri' into 'MigrateAddress' Thread-Topic: [PATCH v9 02/10] migration: convert migration 'uri' into 'MigrateAddress' Thread-Index: Adm74oqBvS7bXSvbLEanSGWgWQmLog== Date: Fri, 21 Jul 2023 14:49:24 +0000 Message-ID: <20230721144914.170991-3-het.gala@nutanix.com> References: <20230721144914.170991-1-het.gala@nutanix.com> In-Reply-To: <20230721144914.170991-1-het.gala@nutanix.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: PH0P220CA0028.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:d3::17) To BYAPR02MB4343.namprd02.prod.outlook.com (2603:10b6:a03:57::18) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BYAPR02MB4343:EE_|SA2PR02MB7561:EE_ x-ms-office365-filtering-correlation-id: 089fa485-ef9a-4619-d092-08db89f9acfe x-proofpoint-crosstenant: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HuOuUbNXTSIBY6LL3nLXby55oqqFuQDg90vvD6B4jHRY15jB2ta682tPd0rWViHB1AqJnXAcZRRJ9L9a6ImmPu9LVo6V9xBouB3BL7po8inOfncqameUx5axlOIVm7g7zDO9Em1SymgP8C66km8FLwrBHY7viPtjAOF1pa17rz3E0KA/lyvizoXfjoIb6I+apKD1eIjCuVXfbN6xaFFJDAaSUxYncZETTzXiRMyopVUzTEUAquKA+MvY2SqVK4QEVfDIlEyMHWcaxqAXh/N5c/O1r6OdJP1eSS5HK774/S743LNPu1rEF37s2yAQtrvoPkteJGhqk2ve/a3Jq3dJ6KG5ZC2ng1hy53wHcxs7EQ1VHlmuLVNtBwcuTSTC13o+aP0+OakYbbaTndZOln7y4Q+z4SQgYrK6ReTn/uvMPPAS9fk98M7brNykLZi+uUvWwq+gly56Z4Vl1Ats90hBWy2SSa84gMVGywM6j5olHOLD+shPMXk9WKR19tMIhZLirNMPJtc6KdGW1TyWSw6uLAaSj7TOqo/gP49jziuN+0YOzjAnUoVcn+3//anpZ+bMHzlmY21fDdh60IZTeR03ImF6BUlV8NeNhdCS9gmJBDUJ6kOSPm9VsqhY9fKCjd45 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR02MB4343.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(39860400002)(366004)(376002)(136003)(346002)(451199021)(2616005)(6486002)(52116002)(6512007)(71200400001)(478600001)(86362001)(26005)(1076003)(107886003)(6506007)(36756003)(5660300002)(4326008)(44832011)(6916009)(41300700001)(8936002)(8676002)(316002)(2906002)(122000001)(38100700002)(54906003)(64756008)(66476007)(66556008)(66446008)(66946007)(38350700002)(186003)(83380400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?sIq0BuAFt0evsbCQFDRzulk26AA5?= =?utf-8?q?L/pF6n/Zfzen1aTcyne58STiBtdibISbJKZVsImNTgKbcAxL+uPaw6aww5uTPtxty?= =?utf-8?q?AHuKbB72rYOQaiLWXMO+7riRuohrguKdIvepT3hHLCzIFlRYYic6oT9Vxs292TFt8?= =?utf-8?q?eWi3LvLPWYL8Lfn1jJuGniQoeZtSCIeFUQ5O8XD1SquNCUWUXmUexTR7DhsbBaJPc?= =?utf-8?q?/baiN92nxpJu+YNrAsk7TlOa68H6LY8m+x1js8mWWkCoTDgXhgyT74Tr2oS4rpjDy?= =?utf-8?q?VqZQmtQeJmJ8CR+kMINJ6syehiobL20d+rHoJ1ghJHRAkxtg5Aj0HGjJxGUVFuxh9?= =?utf-8?q?Zwmbhqs/imX42zN5QhKNSD5j7sz/a7a2+62NvMUAQkUjIrb5SYZtMYdoaP59vxDIw?= =?utf-8?q?eT54wVtynQOOeAXmiYmzNABAdf2W05vk8MOr+i1+/8dTB/fWMUcBsWbCdvSh1JfcH?= =?utf-8?q?iiCrvuUyI//CH41orT1Z8ejalFzAAC4a2sU3F3oKfkovOEphNVPp8+BemKu0QUFVE?= =?utf-8?q?Uy7UVk+HJ1D50wn2vSQyJykPobaaD/EwsOFFIv+2c3RGhc3/nrUCWcu0psQlFPKmN?= =?utf-8?q?6alQui5dL9q81qZs2JuDWcx3KVE3MLXD0QUl1gK87IEjuQkmS9gVQVAi3UfdNF8b5?= =?utf-8?q?h02vPve8Z5n195aUNciu3CGmpu9UgEbAn4y6bRSnRtAA++vZoDzccAPkjTkbakK5K?= =?utf-8?q?7G1IZS8fNoNNnVUwqXAr3tc3tR6ZmUwllP/LVA/FLI5X8A5tHy4zk2kI5wXAoKAK8?= =?utf-8?q?sgOUYD2QpNyr1i96TLM39Z1OhwxemeLbKBQRGwpIyyPMfJtVw/y/87I0PL5GncOq7?= =?utf-8?q?yO4yyEAR5W3dGIGM9jTgxwG0P6YaFHHCefKhzZRySFcdQGbBvswr3ucIUksAREc87?= =?utf-8?q?ONZKfXc/bgXyGj/4hjXKghHnLDN/IpmSxd6nGy3RjCoJncEMaybVF9nKGaeZWsFf1?= =?utf-8?q?guGFBsILheCuJY2Sl79d1la/8eELb3tw4QjufUiWILJMob0n34c9RSISMNNzAEg2E?= =?utf-8?q?Ll8uF6EErEAuNcY4qtIY549iTgm6pcjGeItm5ifP1+qECtcFunUE4iUv1wp+keQ1T?= =?utf-8?q?G0dpIuhCVTYOyOmCX+m8h/G4TlAd4VEW/cwKd38fadkFX9oag2OemaJrWlx52amUa?= =?utf-8?q?9UGFigLxB9Ue3Ogxt1A207KFqK3TnsgNCtdp3uKqg6+ecNL75S0nWLBy07V3Pk6ar?= =?utf-8?q?zDYvVpMBDDC0/jinlNDUN3Tm9FVIuknHs6vmlijMgj1c0ff+czGyslP3XtnThwYG1?= =?utf-8?q?bBxeN+l2hO/1ag4D1eb2Zoyjx8GDmBFkoXPzK1mOu3qRobrlK89IPKuDawDrMnzy5?= =?utf-8?q?wzAOcA/odWSomtynosheTCYITOedIOkz5Dimin6VUsxXzYPW65a+gI2GD33nTTVUf?= =?utf-8?q?DSjxL6Vrv05qloXvgm4oectiyGHW+jkgzxTSydGoo7IGMfmsgw7FgqwlZ7L5Z68SH?= =?utf-8?q?wYl4zm8gzIiRisa7/8F1XBCyEUaoc+eMCuCbG3b6Sg1mdSj8GCMKdnecY5bW5SxaZ?= =?utf-8?q?d5B+oWStkZlIqvZwKaNj727u4+ImDLdErg=3D=3D?= Content-ID: <441266E840DD9B44A32CEBB18D0024F3@namprd02.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR02MB4343.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 089fa485-ef9a-4619-d092-08db89f9acfe X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jul 2023 14:49:24.4960 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: SG2RG5dsK+E5fDVrQe0cH2QtTRZzJMuLAUAnmoEvIfmRDw6MdCxSY0ONyWzSoz9+zG+PsFzOFv2mozf2uXELNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR02MB7561 X-Proofpoint-GUID: 9-TZ7449ankJKBwEMo065A5_d3rNqGi3 X-Proofpoint-ORIG-GUID: 9-TZ7449ankJKBwEMo065A5_d3rNqGi3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-21_09,2023-07-20_01,2023-05-22_02 X-Proofpoint-Spam-Reason: safe Received-SPF: pass client-ip=148.163.151.68; envelope-from=het.gala@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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 This patch parses 'migrate' and 'migrate-incoming' QAPI's 'uri' string containing migration connection related information and stores them inside well defined 'MigrateAddress' struct. Suggested-by: Aravind Retnakaran Signed-off-by: Het Gala Reviewed-by: Daniel P. Berrangé --- migration/exec.c | 1 - migration/exec.h | 4 ++++ migration/migration.c | 55 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/migration/exec.c b/migration/exec.c index 2bf882bbe1..32f5143dfd 100644 --- a/migration/exec.c +++ b/migration/exec.c @@ -27,7 +27,6 @@ #include "qemu/cutils.h" #ifdef WIN32 -const char *exec_get_cmd_path(void); const char *exec_get_cmd_path(void) { g_autofree char *detected_path = g_new(char, MAX_PATH); diff --git a/migration/exec.h b/migration/exec.h index b210ffde7a..736cd71028 100644 --- a/migration/exec.h +++ b/migration/exec.h @@ -19,6 +19,10 @@ #ifndef QEMU_MIGRATION_EXEC_H #define QEMU_MIGRATION_EXEC_H + +#ifdef WIN32 +const char *exec_get_cmd_path(void); +#endif void exec_start_incoming_migration(const char *host_port, Error **errp); void exec_start_outgoing_migration(MigrationState *s, const char *host_port, diff --git a/migration/migration.c b/migration/migration.c index 91bba630a8..5b3be767f0 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -64,6 +64,7 @@ #include "yank_functions.h" #include "sysemu/qtest.h" #include "options.h" +#include "qemu/sockets.h" static NotifierList migration_state_notifiers = NOTIFIER_LIST_INITIALIZER(migration_state_notifiers); @@ -421,15 +422,64 @@ void migrate_add_address(SocketAddress *address) QAPI_CLONE(SocketAddress, address)); } +static bool migrate_uri_parse(const char *uri, + MigrationAddress **channel, + Error **errp) +{ + g_autoptr(MigrationAddress) addr = g_new0(MigrationAddress, 1); + SocketAddress *saddr = &addr->u.socket; + InetSocketAddress *isock = &addr->u.rdma; + strList **tail = &addr->u.exec.args; + + if (strstart(uri, "exec:", NULL)) { + addr->transport = MIGRATION_ADDRESS_TYPE_EXEC; +#ifdef WIN32 + QAPI_LIST_APPEND(tail, g_strdup(exec_get_cmd_path())); + QAPI_LIST_APPEND(tail, g_strdup("/c")); +#else + QAPI_LIST_APPEND(tail, g_strdup("/bin/sh")); + QAPI_LIST_APPEND(tail, g_strdup("-c")); +#endif + QAPI_LIST_APPEND(tail, g_strdup(uri + strlen("exec:"))); + } else if (strstart(uri, "rdma:", NULL)) { + if (inet_parse(isock, uri + strlen("rdma:"), errp)) { + qapi_free_InetSocketAddress(isock); + return false; + } + addr->transport = MIGRATION_ADDRESS_TYPE_RDMA; + } else if (strstart(uri, "tcp:", NULL) || + strstart(uri, "unix:", NULL) || + strstart(uri, "vsock:", NULL) || + strstart(uri, "fd:", NULL)) { + addr->transport = MIGRATION_ADDRESS_TYPE_SOCKET; + saddr = socket_parse(uri, errp); + if (!saddr) { + qapi_free_SocketAddress(saddr); + return false; + } + } else { + error_setg(errp, "unknown migration protocol: %s", uri); + return false; + } + + *channel = addr; + return true; +} + static void qemu_start_incoming_migration(const char *uri, Error **errp) { const char *p = NULL; + g_autoptr(MigrationAddress) channel = g_new0(MigrationAddress, 1); /* URI is not suitable for migration? */ if (!migration_channels_and_uri_compatible(uri, errp)) { return; } + if (uri && !migrate_uri_parse(uri, &channel, errp)) { + return; + } + qapi_event_send_migration(MIGRATION_STATUS_SETUP); if (strstart(uri, "tcp:", &p) || strstart(uri, "unix:", NULL) || @@ -1641,12 +1691,17 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, Error *local_err = NULL; MigrationState *s = migrate_get_current(); const char *p = NULL; + g_autoptr(MigrationAddress) channel = g_new0(MigrationAddress, 1); /* URI is not suitable for migration? */ if (!migration_channels_and_uri_compatible(uri, errp)) { return; } + if (!migrate_uri_parse(uri, &channel, errp)) { + return; + } + resume_requested = has_resume && resume; if (!migrate_prepare(s, has_blk && blk, has_inc && inc, resume_requested, errp)) {