From nobody Tue Aug 25 05:43:58 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1780992044; cv=pass; d=zohomail.com; s=zohoarc; b=JIG5Rf+3P6eL35WVZbw3iZ4CpB0xUqdRiITa/gP2mjhbwN9ZSDUk9FpAunq/2zlWVsh6/3oL4QXhBtZFJtB8R6Z7Ziq6WNuuX550xLCPqG7SsvljRVcFujC8hCRNU55pHRL4yJvh/eSoxmcx4eDI7265yLDjMAtIt7wxT3xp32k= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780992044; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HuAjeF9UOGAH55S8g7CXsr44T4w00et7YZl8H6wcfR8=; b=HJRC69+tuSRnlCt6F2SNF2um0CX6ZYIKeAdJJ4Mpa7dYF+foOY18uQ9zA9wFvHS0u5N2b2CyxmZN/LU83x6M2x7wp41U7kVB63rXsfY3O0ePQqRhXHFauDGtPdtKu5kL7tnKS7QjepQ1hSRcw2WG42sNikn54MBXf6aoscucFLY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780992044780858.5761884999906; Tue, 9 Jun 2026 01:00:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wWrNu-0002pF-56; Tue, 09 Jun 2026 04:00:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWrNr-0002aW-RM for qemu-devel@nongnu.org; Tue, 09 Jun 2026 04:00:28 -0400 Received: from mail-southcentralusazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c10d::3] helo=SN4PR0501CU005.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wWrNp-0004JY-7b for qemu-devel@nongnu.org; Tue, 09 Jun 2026 04:00:27 -0400 Received: from MN2PR14CA0017.namprd14.prod.outlook.com (2603:10b6:208:23e::22) by SA5PPF7F0CA3746.namprd12.prod.outlook.com (2603:10b6:80f:fc04::8d1) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.12; Tue, 9 Jun 2026 08:00:16 +0000 Received: from BN1PEPF00005FFD.namprd05.prod.outlook.com (2603:10b6:208:23e:cafe::42) by MN2PR14CA0017.outlook.office365.com (2603:10b6:208:23e::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.10 via Frontend Transport; Tue, 9 Jun 2026 08:00:16 +0000 Received: from mail.nvidia.com (216.228.117.161) by BN1PEPF00005FFD.mail.protection.outlook.com (10.167.243.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.7 via Frontend Transport; Tue, 9 Jun 2026 08:00:16 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 9 Jun 2026 01:00:02 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 9 Jun 2026 01:00:02 -0700 Received: from vdi.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.2562.20 via Frontend Transport; Tue, 9 Jun 2026 00:59:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uS8rNuP/8TSlzlGao2w3EfGdSegw+Dg4TxMhwKRjfGtotGOnc/AJxRJOgS49twk2maesEhW7NxmZE+Gy7zHofO8F+66e1IdYfwJJqHSUWf6Cn8OZJhdDp7N1PXdkSzlgziiSvIdh9fU1zBLXUTbia1dYozCj9+UjvQZn22wZBxY6b6cTviucffLgWXcwNylGnFMADx1p6bRaswSoQzl+EZq+8qCNen6kfw5SQCclf9e5/3Q0hY8Mn9DTqmGxa5ABSJEZCWewTeVCWw1zvv7PyNZNDdus7p5JLrfxxbIRZaCb5POOtiSdkmJ+8RRYigsy+JzucozBhaM27eDRggP+VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=HuAjeF9UOGAH55S8g7CXsr44T4w00et7YZl8H6wcfR8=; b=Mrfs+r57NA0xXENUPWL/KOH0WVMgoT0ley1AaPZOFxv5E7tXogwolNSOq2RIYubooT5I4L2f2JGdP12CwTDPPNf9iVFGVKlGzy4FU/RQ09ZcJm8bIjAeHthgHcCGioFe7hKHKOfLT2DsCEqxLL++kBFcSHqRLOevziWdm5vWuBb4KfCssrAH2lZy9sGTDjpJXC8tmtZ/2i+bnMCqlgIGAk63uaWBrLqsLX5toSvdtas3SFiWoqHccvvfmbZbQNKNJHflSTCWx239N4PwM6c+ZPWj/UA7yyhLc0zBqzU4IfoPtGOM/J6tQbrWkjAZfjTJJMxVZOtp4jOFe65Fy2KAFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HuAjeF9UOGAH55S8g7CXsr44T4w00et7YZl8H6wcfR8=; b=FYSWcRbl5Rc1ksfja4PGM3VAzVEophUv9YySHD/uwlm1WNRzo+nmmseokxNuijI6zwN3ViW5DJT6kJ0EyJtrVSIeadVmzyJQIVWt3ErHjG8F5chO4lCr7xd1TjfQW66O1jogB9KmoAJ7JIvg+66FKKzVlA2C5uJnuTUQFt+rLRD4Veg30gLGCdfMH3oUVd4BeCsKGYxa9LT0lWE/gNhd+VCi7jhvsuBYsQNSH/XARKA9E6Tw8jn6R5RjPJnGUl9E0/XEhmbZrJLYGPuxc4Emoh2cZXgYPh+8+OAtBXxjqJjmUV8HRp6fYBvc+WWkybSxk0zTT77F2zLyyMeSTnfk0g== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Avihai Horon To: CC: Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Fabiano Rosas , Pierrick Bouvier , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu , Halil Pasic , "Christian Borntraeger" , Jason Herne , Richard Henderson , Ilya Leoshkevich , David Hildenbrand , Eric Farman , Matthew Rosato , "Cornelia Huck" , Eric Blake , "Vladimir Sementsov-Ogievskiy" , John Snow , Markus Armbruster , Maor Gottlieb , Avihai Horon Subject: [PATCH v3 06/14] migration: Rename switchover-ack code to legacy Date: Tue, 9 Jun 2026 10:58:04 +0300 Message-ID: <20260609075812.32067-7-avihaih@nvidia.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20260609075812.32067-1-avihaih@nvidia.com> References: <20260609075812.32067-1-avihaih@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00005FFD:EE_|SA5PPF7F0CA3746:EE_ X-MS-Office365-Filtering-Correlation-Id: 3babc839-4083-465b-20e0-08dec5fd24d3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|7416014|376014|36860700016|22082099003|18002099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: hGYd9uERNDdQ4GCPR878GIMOZn+dfqvsAN8nEzX0fA2hyxN+70VCz9ItB0ScV5eCMNGGHzsOS6cP1gSKaZK+PjwQYdaUeb1PEk6sjYCbOT2e67rM+Sf54SFG+u7W2xXKxFxBJvPbaC8Fwt0ml9MDBN5I46XHF0//YAHhO80JsxuBjLkbqVFjO+EVODVir2n3O1oOhzIs30jtogRgI33FZ85q2GnNu774epYdCQ8Ke9BSM5HNTvBmmsPMnN3m4PTADnTRmayvGXHdAqQGEY666ZWixShzbCOqmIiw3TBI4Pv9ZlTr80hlRrSELcFpyAd1TqnlwkHTOUjvRChm4WC1CU4CnU2qmaeRZkGH2CNeBeX8EzDOFYmof8rubqLxoHiYHDaN5q/PJgzJuYpvIihkjIAAcoQ+fgWpfBo41vFNHabcTYS46818wvXs+CEmHoxTCagVrBL+TZMs06f1id830Rrzy1/kctt6bX2GdZi1mTGa5dd+RhYvjPfmZQlwNPiZBA8uPJhupgRVMFgN9c1zoWjLS4p0k1XyV95vx+6e3DD9KTe58Gd1KN88ojHjpcXUTEXW3T3sUnTUukc8SCoGZnEZ8uUv/GsC2+xyYdSEmApNmIBAd4YDHFxRLhtbRTttL0hqxto/JrI5IilUiTqvgfKge1JwGhX2OcSTnRNFPM3qUGIsmFHiLqJb0Kusnt7EVObe3CZF+LlgCeNvL7H/g9aTw/RI1EPKqI2whInOBuk= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(7416014)(376014)(36860700016)(22082099003)(18002099003)(11063799006)(56012099006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mPmcGeMLcjotLv9zm03wTjnYRvgJCnzmPVh5xmhri+ezE7JXrIXslNwqTVjCkJYcsjWS6ikTP8ew6W8L2o+w9i/yWa1b98R45Y2LhjD75V6gd7tFF1n6lBGVLNwV9eYsAV0uZ43UGkx3yN+c3aOTO+U992KFxxOmLzBXca8r9HCX5+XYxOjHmq14pITkOJf1R1DAomfE9KxVYBSktwb4zd8V3D9L0+/cAPuY1/X7KR4/KkV+tKQwMwDFLHLymw7VrpwmDzh4FxMOS2C+u1+mBXU24B9VWhdaaKfd+pgeut/E2Zus003Jh8QTXtM26r4XD3Tg0UWNhQEXYkmly464X+k/q6hcz1MqHbZPsLM1mwTV+QhEVPwDokCTy+hd18WbL9gATKyeFSY6Cs7xtMAUZoryEoxaoAWkh5FNAKVLY5qvYV+HM79/FtTdfkUjy5XI X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 08:00:16.6589 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3babc839-4083-465b-20e0-08dec5fd24d3 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00005FFD.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PPF7F0CA3746 Received-SPF: permerror client-ip=2a01:111:f403:c10d::3; envelope-from=avihaih@nvidia.com; helo=SN4PR0501CU005.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1780992047699154100 Content-Type: text/plain; charset="utf-8" A new switchover-ack mechanism will be added in the following patches. However, the old mechanism must still be kept for backward compatibility. Rename existing code that will be used only for old switchover-ack mechanism as legacy. This will help to distinguish legacy code from new code and make it more readable and easier for removal later when no longer needed. No functional change intended. Reviewed-by: Peter Xu Signed-off-by: Avihai Horon --- include/migration/misc.h | 2 +- migration/migration.h | 2 +- hw/vfio/migration.c | 6 ++--- migration/migration.c | 8 +++---- migration/savevm.c | 49 +++++++++++++++++++++++++++------------- migration/trace-events | 4 ++-- 6 files changed, 44 insertions(+), 27 deletions(-) diff --git a/include/migration/misc.h b/include/migration/misc.h index a2219c981b..4b43413aee 100644 --- a/include/migration/misc.h +++ b/include/migration/misc.h @@ -156,6 +156,6 @@ bool multifd_device_state_save_thread_should_exit(void); void multifd_abort_device_state_save_threads(void); bool multifd_join_device_state_save_threads(void); =20 -void migration_request_switchover_ack(const char *requester); +void migration_request_switchover_ack_legacy(const char *requester); =20 #endif diff --git a/migration/migration.h b/migration/migration.h index 841f49b215..da45444f7b 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -246,7 +246,7 @@ struct MigrationIncomingState { * zero an ACK that it's OK to do switchover is sent to the source. No= lock * is needed as this field is updated serially. */ - unsigned int switchover_ack_pending_num; + unsigned int switchover_ack_pending_num_legacy; =20 /* Do exit on incoming migration failure */ bool exit_on_error; diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c index 7055cfbd3e..6b7acb2fa1 100644 --- a/hw/vfio/migration.c +++ b/hw/vfio/migration.c @@ -487,11 +487,11 @@ static bool vfio_precopy_supported(VFIODevice *vbased= ev) return migration->mig_flags & VFIO_MIGRATION_PRE_COPY; } =20 -static void vfio_request_switchover_ack(VFIODevice *vbasedev) +static void vfio_request_switchover_ack_legacy(VFIODevice *vbasedev) { if (vfio_precopy_supported(vbasedev)) { /* Precopy support implies switchover-ack is needed */ - migration_request_switchover_ack(vbasedev->name); + migration_request_switchover_ack_legacy(vbasedev->name); } } =20 @@ -784,7 +784,7 @@ static int vfio_load_setup(QEMUFile *f, void *opaque, E= rror **errp) return ret; } =20 - vfio_request_switchover_ack(vbasedev); + vfio_request_switchover_ack_legacy(vbasedev); =20 return 0; } diff --git a/migration/migration.c b/migration/migration.c index d6383b23b9..8d189fec80 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2197,7 +2197,7 @@ void migration_rp_kick(MigrationState *s) } =20 /* This is called only on destination side */ -void migration_request_switchover_ack(const char *requester) +void migration_request_switchover_ack_legacy(const char *requester) { MigrationIncomingState *mis =3D migration_incoming_get_current(); =20 @@ -2205,10 +2205,10 @@ void migration_request_switchover_ack(const char *r= equester) return; } =20 - mis->switchover_ack_pending_num++; + mis->switchover_ack_pending_num_legacy++; =20 - trace_migration_request_switchover_ack(requester, - mis->switchover_ack_pending_num= ); + trace_migration_request_switchover_ack_legacy( + requester, mis->switchover_ack_pending_num_legacy); } =20 static struct rp_cmd_args { diff --git a/migration/savevm.c b/migration/savevm.c index 25afcfd71e..8e6c5b7c87 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2478,6 +2478,31 @@ static int loadvm_postcopy_handle_switchover_start(E= rror **errp) return 0; } =20 +/* + * If legacy switchover-ack is enabled but no device uses it, need to send= an + * ACK to source that it's OK to switchover. + */ +static int loadvm_switchover_ack_no_users_legacy(MigrationIncomingState *m= is, + Error **errp) +{ + int ret; + + if (!migrate_switchover_ack()) { + return 0; + } + + if (!mis->switchover_ack_pending_num_legacy) { + ret =3D migrate_send_rp_switchover_ack(mis); + if (ret) { + error_setg_errno(errp, -ret, + "Could not send switchover ack RP MSG"); + return ret; + } + } + + return 0; +} + /* * Process an incoming 'QEMU_VM_COMMAND' * 0 just a normal return @@ -2527,18 +2552,9 @@ static int loadvm_process_command(QEMUFile *f, Error= **errp) } mis->to_src_file =3D qemu_file_get_return_path(f); =20 - /* - * Switchover ack is enabled but no device uses it, so send an ACK= to - * source that it's OK to switchover. Do it here, after return pat= h has - * been created. - */ - if (migrate_switchover_ack() && !mis->switchover_ack_pending_num) { - ret =3D migrate_send_rp_switchover_ack(mis); - if (ret) { - error_setg_errno(errp, -ret, - "Could not send switchover ack RP MSG"); - return ret; - } + ret =3D loadvm_switchover_ack_no_users_legacy(mis, errp); + if (ret) { + return ret; } return 0; =20 @@ -3157,14 +3173,15 @@ int qemu_loadvm_approve_switchover(const char *appr= over) { MigrationIncomingState *mis =3D migration_incoming_get_current(); =20 - if (!mis->switchover_ack_pending_num) { + if (!mis->switchover_ack_pending_num_legacy) { return -EINVAL; } =20 - mis->switchover_ack_pending_num--; - trace_loadvm_approve_switchover(approver, mis->switchover_ack_pending_= num); + mis->switchover_ack_pending_num_legacy--; + trace_loadvm_approve_switchover_legacy( + approver, mis->switchover_ack_pending_num_legacy); =20 - if (mis->switchover_ack_pending_num) { + if (mis->switchover_ack_pending_num_legacy) { return 0; } =20 diff --git a/migration/trace-events b/migration/trace-events index 5955befcc6..a6b8c31ee1 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -23,7 +23,7 @@ loadvm_postcopy_ram_handle_discard_end(void) "" loadvm_postcopy_ram_handle_discard_header(const char *ramid, uint16_t len)= "%s: %ud" loadvm_process_command(const char *s, uint16_t len) "com=3D%s len=3D%d" loadvm_process_command_ping(uint32_t val) "0x%x" -loadvm_approve_switchover(const char *approver, unsigned int switchover_ac= k_pending_num) "Approver %s, switchover_ack_pending_num %u" +loadvm_approve_switchover_legacy(const char *approver, unsigned int switch= over_ack_pending_num_legacy) "Approver %s, switchover_ack_pending_num_legac= y %u" postcopy_ram_listen_thread_exit(void) "" postcopy_ram_listen_thread_start(void) "" qemu_savevm_send_postcopy_advise(void) "" @@ -198,7 +198,7 @@ process_incoming_migration_co_postcopy_end_main(void) "" postcopy_preempt_enabled(bool value) "%d" migration_precopy_complete(void) "" migration_call_notifiers(int type) "type=3D%d" -migration_request_switchover_ack(const char *requester, unsigned int switc= hover_ack_pending_num) "Requester %s, switchover_ack_pending_num %u" +migration_request_switchover_ack_legacy(const char *requester, unsigned in= t switchover_ack_pending_num_legacy) "Requester %s, switchover_ack_pending_= num_legacy %u" =20 # migration-stats migration_transferred_bytes(uint64_t qemu_file, uint64_t multifd, uint64_t= rdma) "qemu_file %" PRIu64 " multifd %" PRIu64 " RDMA %" PRIu64 --=20 2.40.1