From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11023092.outbound.protection.outlook.com [52.101.83.92]) by lore.virtuozzo.com (Postfix) with ESMTPS id 5643780BA4 for ; Tue, 20 Oct 2026 16:31:05 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YpBATV10/QkqmxRUk2N7CusX0uR3eH0q6j0DEeDKZ/ctDJ2zbtYPHZC8wSruw7a6kFo83xwhSBRWXK3pOTR/msR4o2nYSEVHLrhqpo/f3GoYXOxjt1VIZcCbAzSglH4+qimW4/whVIuMjcXwo7ufVJ7msUgqRh5wEvXvq+W2QudpaYS9bbk1uPYZxUblIA1J/1X5CddRo+7EJ7DndD2odx6trrEZ7KUtLKZm+0+KM4jhZ2WhtX1FmZQBio0ZtI5bUr4+8FAkZcHzBq1AKX40SuPZ7tCp+JVN2/azNEneX2L/bbCgRpoliWz6y3jfMor3wdM85csC8cP9Aicr5wZj5g== 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=rIxW0C/e3Vsxb4bDGmc2p+ddnoWbvlXaF+F7es+Nsds=; b=ckt25fTe8NSrG6e4EO0R5euLKEX8nPm/X+Obb1OC0k340IOLuPTnSl67QccsQ2y2Csym+d5LomI0jcA/COg1eXOjNA4fQbtwWhLug3hu22ha9GMgw+Gdw0opvrLR4MGHKBGuAeoqAVvnz10yCsoHwUW+riKufqFX2vDJTe0fJ/53loRy9dmAfcm0D4NUCbGAoGfU8rAF/6PB/cfQy81MwfdyZcK73DYPp/P8mYTOAdcsbSWBkEgcue1K8CYT0XLdF1I3oPwGKruEf78DkOWgkkZ4Oknch4OMmR4oW4QkgIEwsDMqfolLknkoAfiH/WTnk+SghDtlIAxnEZhhh+tnGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rIxW0C/e3Vsxb4bDGmc2p+ddnoWbvlXaF+F7es+Nsds=; b=E2IbIyi3tVYCxtT9fBDrOGcPtAryRHJU5upzXgZe10/8jvuvk4zY4+y8+D2jPf3Ye5Rg4b0v6NYquOUtaAf0QarNN2k67V53atd/hRRaF/FqUrV+BFxRJE/A/txL/lxxvC48biItig56yTLMUwT6JVwB+MD2PMHja8t0cOv7+oE3g4oNdwbY4zT41LPVOwYSiIZmlAq/PWFl8rAE6Q5eGyjGzLJFg6fTaWjn91smVj5iWlrs7iQUoPntk7uhxPemxhtRlv2Po5Q0beRbn7Ktpw54M3vpolsek0RUc5osxNbFwtkdj40NBplkAfZkm2qCqv7160PCCHZtMpxxtL8RVQ== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by AS4PR08MB7553.eurprd08.prod.outlook.com (2603:10a6:20b:4fb::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.15; Tue, 20 Oct 2026 16:31:03 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%7]) with mapi id 15.21.0546.012; Tue, 20 Oct 2026 16:31:03 +0000 From: Andrey Drobyshev Date: Tue, 20 Oct 2026 19:31:08 +0300 Subject: [PATCH QEMU HCI-8.1 v4 28/31] VZ: migration/cpr-exec: don't exec if a vhost-net device can't be released Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261020-vfio_v1-v4-28-83a5668230e5@virtuozzo.com> References: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> In-Reply-To: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0056.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34b::14) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AS4PR08MB7553:EE_ X-MS-Office365-Filtering-Correlation-Id: 8829375e-a233-43bf-d980-08df2ec78690 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|376014|52116014|366016|5113699003|10067099003|22082099003|18002099003|5023799004|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: Qc9t+SA8Te1O8JXCntz9RJeqLr7JFY/CEGQDeVIjOoYeukYB/fBHU2AoQxLqoG18vhxp+80KEEtb4+fB/s8ovzOw/4SudMwiDW6qB9XcEyjaXsZugX51mhrj0Qzz6sA2cm7I48B4GNqDOciiYruoGUmqk6VYnrJaPvAoAriQ/VcLksuiBLPyYGBuX1NJuVfgxFua/NbPutqAoDxxNtc3Rm/jjbPJDG57e+J+/iuGcptFx3NGUTMd995PaGpoe6IBKontMG6DOuzhV4STLAFcyrrx0u81uzaCnemgjVAWzpgGNOtfwQLn/O8v8weHGJyNpmwAHzqa/TIiDLD6p6NaBvIlHB5GIFP8pzIIuDUV0dumNSGXno/mNoJXklacXqumXaJeoGn58oXg8FtTL885BBqUXZ8bLsQkILblOXGWUWrdgzch8SkzHHhgP6+m8pYLQLipcJK58iC7dtt9WCWegkukQE27QyAz088cZYJ07zQsdYkPRt+rjn+C2aEae4mCIBhcVj8hKYxZT36d5W4eI3M8yRPFTISybfIjvax1PIgrswB+SSE7QOuTYcGLUWuDGBTECgLn6wbUD4pCg88PNBpeNXfu+GAcVUNSZfykPIFnG0+SkFUzuB1ZV1HhrHJcL+jKm5sMWXW+3fK9jNRdYBdbxmpcrIyWN3TVwXsu7UE+CO6UZXfObMYPTw9RGzjkKg+PMvaAC6EJEEgT6z0I2TgOR1Xx/CM+mRH1EDL1iFw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB10656.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(52116014)(366016)(5113699003)(10067099003)(22082099003)(18002099003)(5023799004)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MlU0STNlNlBDQ2pMY2ZhWHl4bHRZUUJrbTFDUTBobXpmSWJ6QTdGemJIMi9K?= =?utf-8?B?Y2M4M0hWSVpUeGdwTWhVRUd3dTV4dUtnS3FhbzNyRDFPZURnbFlsa216b2dX?= =?utf-8?B?N3gvWW5rTmZVYWhmTmRZUjhWV3BVaDZIN3JYNnJpTkhycVd1dG9EYWdiT3dI?= =?utf-8?B?cEdOWk9hazcwbDN4ZHc4T256YW9ISCs1WVduWHJNaDNxNENLaXM3d0JiOGlw?= =?utf-8?B?OVZBWUFVdGdRclYxWktOamRGSTBJUXgrSUZpalNNR25YTlZqZVBxNXdIeGti?= =?utf-8?B?L1Q0UVhYNjcydlhhTDBzeWZxOFBYNkF1ZkZiVzR0aER1WHl5ODdMYkYxNHVX?= =?utf-8?B?MXRsb24yUWpwV3FwcU43VTY1Q3Q1dWRybTNPKzRWcmRITVY5RjNZQ1lqaGZr?= =?utf-8?B?ek1jVitRQmZxd2tONTBsNHlHNGt5bDlnUC9qcGRTWjFGcUt6YWc0ZUZ5d0Vt?= =?utf-8?B?dDNQcW4raS9kaEJXNmlSMDJUYUJKSmxId0VzUm5HRDNrRDJOci8rVEthVXlY?= =?utf-8?B?Sy9aMmh6dElvTTFKQnVoOWtsYVE5WGhuMkYyYktZMWdmaGN4SXllSFhNYnhk?= =?utf-8?B?ek5neHhTenk1ejBRTGRwcFFrbWFFT2xjdXlqNUpsRy9RUDBmK1hodWNrMzFT?= =?utf-8?B?akdnQWJyUDdEMDNRaURhVGZXZ2ZhQ1dXVDdOemg2bW5tT3loaFMxWHlGeUFk?= =?utf-8?B?cklVd05uQjBzc1phMmp4RnJrS1UxREgyZ3JEZ3U4ME82d0lqNGZJTlMxVlli?= =?utf-8?B?cjBTMmI2N1N2N25KM1l3a1cydGJCdzFNcUJhRDMveCtNUm5GQ3VsZjdTbHNY?= =?utf-8?B?UHd6LzFwVmxpN0RYa0tzc1ZXWlp5VU9yb0RhL1lwcTcwNndwbysrSUlCS2N3?= =?utf-8?B?M2dFb2xTMUxiNnBNcUsxQS9jTXpjNy9TYWNwV2I2UzhFK3VBUlAvNCtrcEpa?= =?utf-8?B?MVVVK21zWENUakN3RnJRWm8wbHRLWmJoVHZOeFhHZ29kRTJpUjNXdU1JOHB4?= =?utf-8?B?dHVwUnNvSnVTL1kweUJvaHFScGNiUDB3dld0UEN2Qzk5V0NCdCtISVZXRzgw?= =?utf-8?B?OHVlKzRMdDVxQzJzWndFMWpRbjBOU29GNE9iT25sN2JoM2wyLzMrODJ0WjAy?= =?utf-8?B?S0Y1ZmFzMCtsVmhTZmNTQTlqZGFhSER1aEh6Vnh2RFIyTlVXa2dnTlJSNFZT?= =?utf-8?B?U09EZFFhUXdLMHVieXJZdklDeEVramNuaDdVUG1PRWVJcjdlNU9CN3RVRUUv?= =?utf-8?B?d2JoVnR0V3N1VXhpYlZkSHFRQ0FxWXR6SzM2MzNBSlRJcmp5VlU0K1FkL2Mv?= =?utf-8?B?bFIzRTdpK05OSEMxdXFKcE5MaFA4b0J2Tldqak5jMjA0bUpKejloLzVPM2JG?= =?utf-8?B?VXlWNTN6Mi9BRUt2Zkg0ZWp5cTdmWUdERmN5ZkJpSUZyTktZQkFrNnNySzBW?= =?utf-8?B?cVpzWmZRQk9zcktKcTBFQzdHMkRxcnMwL1FRYUFhS0crbWRGTnV4ZzNadFB4?= =?utf-8?B?T3ArUmtMV1NwSDNmY2k4dHUyQnJtV3hNRHhQZTFVQ2VhamZKVjlUYWVGaWdX?= =?utf-8?B?aVAvZDJScWhiUjQreUxiem1BV2NVUHZWRWQzTGNxU3ZOTFZxVFFIR2RFeENr?= =?utf-8?B?a25TMmZtRE8xNWsrVkdLNTViY3FTZjJTbzliVWNaV1pVVTdPbW1zQUNSaWV0?= =?utf-8?B?czg0U00vY3VzczdRUDVQUzJqWFhINlFvTWIrTlEyTTBrZ2pOMitvVlBpS05v?= =?utf-8?B?TTZnVUR2NUVhdERoQ1NBeGVSZnVKOWIzVkFNZGN4MFZZbWJMZFZTOEQvNGFq?= =?utf-8?B?N2xPQzNYZWc2dHBlbXdXSUJCdnJqNm80T0s2VUZKWlJmVGpXajMzeGg4VkRn?= =?utf-8?B?d2M5enVRaDN2dFVBSWExMFRmSTI4MnFJSi9SMTJoOEV2S3NicFI2S2x1TlBr?= =?utf-8?B?cFg2OVIwNVFwNnJKYVZYZ3FjTFZuTkp3RXBRN0R5d3hrbEd2RFdOUjJBcU9L?= =?utf-8?B?V3hRQ2xMSmVvbE9JbER1MW5HVWtJL29UYXV2SWRXblgweU5tK1FnaUN6d1VU?= =?utf-8?B?c0VVWWppYmYxVEg1aEZvNGZ3WmUwOVBiaDcyQ1BhcGtPNWkxaWkvSk5lcFg0?= =?utf-8?B?cGt6bk1hWWlLU24xcy93TFJQaU14Z0liV0YxeFE5TE1OeSsrSHdIaHYwZDdq?= =?utf-8?B?aktGUlpEbmNpWlhyZFlncjF1T0NFa1QzcTJtb0tqd3RqbHB6Q3hvbEpod1ln?= =?utf-8?B?b3FCS0FtbDNyaHdJbEpnczk3WmxGcWZmbVRFQ0RZZmV0U1IyNjhYZkhZNTZz?= =?utf-8?B?Sng0MFJOQzhGWVJ4M1JuUTZzaDcxT0loYW11VjBtMm4zTEtWcXQzbXJjMyts?= =?utf-8?Q?pye8LU3z8NjtfsYI=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8829375e-a233-43bf-d980-08df2ec78690 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2026 16:31:00.1625 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: e7vwSS4XDjXlU/Re/QxYTJp2B2HKpwPrtWRP22V4uNvQfEtkvy55PksVNsS/gqPKrCPKzX3vSFl6gDsC4QPB7hU7+hmtqciHDD5EfNBk4QI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7553 vhost_net_cpr_reset_owners() only warns when VHOST_RESET_OWNER fails for a device, and the exec goes on. But the new QEMU can't take such a device: it is still owned by the old mm, so VHOST_SET_OWNER fails with EBUSY, and the guest is left without network after the update. Stop at the first device that can't be released and abort the cpr-exec instead. The VM goes on in the old QEMU, with the devices released so far taken back. vhost-vsock already does that in its pre_save. Fixes: 1278e4830052 ("VZ: migration/cpr-exec: vhost-net: send RESET_OWNER before cpr-exec") Signed-off-by: Andrey Drobyshev --- hw/net/vhost_net.c | 19 +++++++++++++------ include/net/vhost_net.h | 2 +- migration/cpr-exec.c | 7 ++++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index fae6b060c6f..9110dc43d23 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -579,8 +579,12 @@ void vhost_net_config_mask(VHostNetState *net, VirtIODevice *dev, bool mask) * EBUSY. Called right before execve(), when the VM is stopped and the * devices have already been stopped, so nothing is in flight. The device is * fully re-initialized from the migrated state by the new QEMU. + * + * Stops at the first device that can't be released, since the new QEMU + * couldn't take it. The caller then takes back the ones already released + * with vhost_net_cpr_set_owners(). */ -void vhost_net_cpr_reset_owners(void) +void vhost_net_cpr_reset_owners(Error **errp) { NetClientState *nc; @@ -591,12 +595,15 @@ void vhost_net_cpr_reset_owners(void) net->dev.vhost_ops->backend_type == VHOST_BACKEND_TYPE_KERNEL) { int r = vhost_dev_reset_owner(&net->dev); - if (r < 0 && r != -ENOSYS) { - warn_report("cpr: failed to reset vhost-net owner for %s: %s", - nc->name, strerror(-r)); - } else if (r == 0) { - net->cpr_owner_reset = true; + if (r == -ENOSYS) { + continue; + } + if (r < 0) { + error_setg_errno(errp, -r, "cpr: failed to reset vhost-net " + "owner for %s", nc->name); + return; } + net->cpr_owner_reset = true; } } } diff --git a/include/net/vhost_net.h b/include/net/vhost_net.h index cdfefa81500..679edefa1d3 100644 --- a/include/net/vhost_net.h +++ b/include/net/vhost_net.h @@ -89,6 +89,6 @@ int vhost_net_virtqueue_restart(VirtIODevice *vdev, NetClientState *nc, void vhost_net_save_acked_features(NetClientState *nc); -void vhost_net_cpr_reset_owners(void); +void vhost_net_cpr_reset_owners(Error **errp); void vhost_net_cpr_set_owners(void); #endif diff --git a/migration/cpr-exec.c b/migration/cpr-exec.c index 21caa614a13..a206ca44a4b 100644 --- a/migration/cpr-exec.c +++ b/migration/cpr-exec.c @@ -228,7 +228,10 @@ static void cpr_exec_cb(void *opaque) * Hand the preserved vhost-net devices over to the new QEMU: they are * still owned by this mm, which is about to be replaced by execve(). */ - vhost_net_cpr_reset_owners(); + vhost_net_cpr_reset_owners(&err); + if (err) { + goto fail_with_err; + } trace_cpr_exec(); execvp(argv[0], argv); @@ -238,6 +241,8 @@ static void cpr_exec_cb(void *opaque) * or the system is very short on resources. */ error_setg_errno(&err, errno, "execvp %s failed", argv[0]); + +fail_with_err: error_report_err(error_copy(err)); migrate_set_state(&s->state, s->state, MIGRATION_STATUS_FAILED); migrate_set_error(s, err); -- 2.47.1