From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023142.outbound.protection.outlook.com [40.107.159.142]) by lore.virtuozzo.com (Postfix) with ESMTPS id 3C1BF8069D for ; Mon, 28 Sep 2026 13:23:54 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZKgouMPP589H+C/LiV6OnrzqxbT1vZfo0LJCl73NRnD7on9zZQxELJx4bXH9tH+hY7qdavCcW+Ye0KWCCFaLcl6ejMzlINnqJpf/YcG/6/6KcLyVPw3YKHPMhFDprlmjsRwf2l7FH/7abAd5wntVJuekX9E2NKIMw1odsXrguDrvmMaOXByh0q9LmejsDmybFhqOIM58C90JpzmlcoZqMrDePfu/axa+B8oxrL5zxAJ5twQ4jtBrykj877964xIugoo40eqrUteq0/1jkNk0ppoBWGY4969PK6EJ+ShizBjC+aSXDfI+lR53E0RKTCWoQJePe0Tg4ZO18vRyBED2UQ== 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=Z5h/C2A1clBwgrHm+P8KtdhimUZNO/H9cvtDEyFQW6c=; b=NjaQirjrlnIbcpMgg6mI8d3rN4XgZioV61MzobyBoBNzf9SAfkO0UCCmmgOUB+Mw+tGaRxnhLzYB+jASC5aoQ5+dY2wwj4zZENbWAiOC9OOHBEgpp+BGj6PCWodNvSU5/PvjY4V/DJ4C4b783Gi74sbuBbVGgZoGdTLcJ7dKDzKawozfDPsEdKO4Y6RLjTIpGhR/cSSXG1dWKfiEOF+TPVYUfo+DlOeUjN+CFaLD4Do7j4ebO38OnJsld2b17pa5sYFfdAh1oogdWxGmmNU7v5qZv85C5thVIBh6na++zG04bLlOjJF5rfATgU2HNjS33th2jXKG+4G1FXuBDY6VFQ== 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=Z5h/C2A1clBwgrHm+P8KtdhimUZNO/H9cvtDEyFQW6c=; b=y2feqR7uG9vpUk8+o5erYzxHrJA292CYJ3Wr2sq8wfsr/dTg3doJC+tpKhXVks8nrs/p/mMbMXkSR4fyht++/97oQVD5kVTAM5eiJE0gPkIIbgXVr3eeJxStKKPZz9ZCArf2HNwNzD37MhS2jxdcQJ3/sDGxj+iVe4AghMMVKc9PGn2QEVz5Am9C9H7r+1AXzyvn2axqJF7UrWG4zLvI3OebF8259NRWO5vqLHf4tMRImHGPfNm4aenboL9P1Ks5vx3ub0J/Co6QzR5TV4yG43gS8Nng+t4l1IL1F8NDKXqdjCBMJmhYQOlErDT8Rcjobfu/2AoB59UgTiaeOUwCZA== 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 GVXPR08MB7752.eurprd08.prod.outlook.com (2603:10a6:150:6::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.19; Mon, 28 Sep 2026 13:23:49 +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.0451.014; Mon, 28 Sep 2026 13:23:49 +0000 From: Andrey Drobyshev To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [QEMU HCI-7.4 PATCH] migration: set .vm_old_state in migration_stop_vm() #VSTOR-147066 Date: Mon, 28 Sep 2026 16:23:35 +0300 Message-ID: <20260928132335.482413-1-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: VI1PR09CA0147.eurprd09.prod.outlook.com (2603:10a6:803:12c::31) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|GVXPR08MB7752:EE_ X-MS-Office365-Filtering-Correlation-Id: 225cd326-7fdf-4bab-3d67-08df1d63bb58 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|52116014|376014|366016|1800799024|23010399003|10067099003|5113699003|56012099006|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: lXeQM7+hNyTk66ZX1bxPirs2OmOfF9vv1lFLXhmo9a40spY89G3KqlGb5gcSxhB50zr2dgJkwd7jNbuoxwGl45mpzXBHS1nvS5klAXPsg9zlFZnMhFEPo6HC4K3yoE9iWixErOgmU+2+SwVVQs0iUEAQ0JjjXXYAcI/Pzz4+EIA3iPdkzYteF3EmhCzvXqcse/6zXyD28UjZsClKm8Qz52YGMvr1vRR+ZSOWVXK3z0aiRT6jVEu+4eZESG1SlanLDnh8q7bBBzfOppr25h9/kwhrefaWSyJaH118DoPa6tn6S7JwK7N4mbJwGKnkUotBphBm8Y6JxvbNF2e1S/xNQ3YeVLBWheMuTPUNMuape4b4ttYDp5cJA+DwPXy1x0pOML5SqRiD/U7tykCUGzc0EvzPVfdxZdj3Pq788Is04pLE9RuTQJIbXEFs5xg0xsCznEkqqG5n7p1VQPGeVps08xUroGoArCdHI/02Qlo0vg1dHUxqwcW58I7YVW8JoJWDg4NdXJ9FIizgGLuc56TvdSYjw/nbJI1Yuiy6x1tOvTLI0WBZCsTBe4hX2mYbjYVZ/LCn6poJvPbS60X2HIFtmNsk30r2gmhUvIWoIk79aWe1N/HJKZImYA7tMSJORHHRxhSScK9GsUZfqVOPofGIKg9b2L2z+svkWXdyr1rQUdoJ3dB1e2RThofJ25UMtpshwaLXLKEWdEmfGegOQQQn9sk/oHPidOkI7+DKIEqXeOY= 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)(52116014)(376014)(366016)(1800799024)(23010399003)(10067099003)(5113699003)(56012099006)(18002099003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NGMYnTqCVjLzGJnVWxQ4w3mQXR5GMBUO+nMPblpVi1ltfbuKR5XFkgUIq5oE?= =?us-ascii?Q?zWEbHcjQ52CWDyTES9A6yPRLWlsUraNXhSu6knnZXDwnrTJwNNRnzFHKGx7R?= =?us-ascii?Q?mK/jRAOVXhIIbCLUdcpsZAQP7MnIEA3U6UJwusphBpmWMel5kWWXcZxdUHIk?= =?us-ascii?Q?xdnukk6WtqAoLqrAiWVQ5bLFuiRUJbq71EIKnf7Dffb4AmkploLenOHbLyNm?= =?us-ascii?Q?jO13MXXhvhoKxK98wvp0KEM5XiRsjtxKyNk9pJPNv3LQPjrW/Uk0ctiNrmoO?= =?us-ascii?Q?nhe+ucXTryWD2RimMVt0aSs+Ec2Z5dmayv51BSxvwJHYFf3E8yhTazyLFEvt?= =?us-ascii?Q?iTjyUuIGyYAYnIPugyxav6P3cB2qPbXoaEpUQU2+9e/pWWWoTjPC9EuIze5t?= =?us-ascii?Q?40uy/EWypLY0W8+QeCNEvpLS//G1JGJb0ClS/X/WuAysA78cpmKvEdKBDl/m?= =?us-ascii?Q?nOt+NstEl3l674G68kDdpGrKibej+zb91esyxCcupIV2OWWkE4dqrSeSjax6?= =?us-ascii?Q?AxohTQpCT3mWEZnY/tMHRhBmskP7JIKtdw66s3hUq5z3Vl+S0qyQBpfbznxW?= =?us-ascii?Q?EH+GU3jct3mv/LXR8Ryic48xcD8rYuqBOWo6NXQzfhQodEziKILpfC5ABJVm?= =?us-ascii?Q?ffGlyNujPhbEMkk1oGtzGfzFZuE8Oku4oNRYDn/T2AGwtr9PJSoDBQHULIdf?= =?us-ascii?Q?LbYnc6BwWP0rNQYeBolf3UYKQnzBYGfaTKShR0rTG+QAv0i9L9ikNzTfDj2V?= =?us-ascii?Q?nKLr+AKoaLLRmGLxlE8YsRXRy0fqx0RVq9GUBOk7Alh6kjrk9oBzIZNOmE9m?= =?us-ascii?Q?eAb/6Jr+wk9lIaoYEJyX4zTcIoBGLkucD5TSWiPZXy5es7QVNKBZkh9u5xmM?= =?us-ascii?Q?nz85r4dkH7g8IQHmOeR4JobM6TdbWnmcfs4AsgwdkI4Hx2jDmvO0R+qCf6Ho?= =?us-ascii?Q?YP3KSVjFwTLrzgXqkfMr93JBJOgPhHNPGiKr7Jk0cf/AZyw3D/5zDQFslLbP?= =?us-ascii?Q?XnLWq59F1EsDEZ3GAV1ZNIMx+/IJ0mSEOm3NqnF9Sx8saSNFxcciGHIGDUvj?= =?us-ascii?Q?PNGTkG6xrWLGCOXGY1fIMNB2CfA0M3g7Y8XxWXJUCLgH7Ocd1SfTcMmSoPsO?= =?us-ascii?Q?rAvdpRtPQa+2+5oQ3Q6cJUNztvTKYF3XXuWpspQVM5AVMDYe0eCjR4dFxrRa?= =?us-ascii?Q?oaDD3P9ZoxV3+/ok0GUY3TiinimLZELE4y3L85ihhBKJKyBG7map+IOfoP8C?= =?us-ascii?Q?buET68uohAMOdbD9kOL7uPIv0AkzlaAobZk6rm0lp/hHW0GfiCab3QwiWkGV?= =?us-ascii?Q?s4jeiwRGGN1eZAH+CVlDZ3nOcLtOxwGlJOBVDXGWNLVM7gyfeh8lvJlndScI?= =?us-ascii?Q?HAnGxmet1cmgWOOx7HiSsHdBehv042EnKfeBRRt0Iq8RrDkr2poQ9D43huq8?= =?us-ascii?Q?lglwsZtOqnNx0+X9RLScOoFRAHp0FakmaF4CSwuPDUvrypfZG8zUEBhbVMVS?= =?us-ascii?Q?D1pZcfoFy/a2vh9omvTsuiigbzwU4W4ZZaOujuxqNYlvjZ3gpv1mY2B/T8AG?= =?us-ascii?Q?UlCOAv7F8A+XQFpMK1fHhlpGPb7HV67DvVkKgTUO+3T7u4d8stpxgR49VAD3?= =?us-ascii?Q?u7sz0dnDl7gy/xFyoLj/yTQtVqutR4LSL6IXMrCnakqwATC1yz3bq7urOvNK?= =?us-ascii?Q?2cDjs1uMv7o02cyDE1gVD2StTtabIb0ydy3hwuM73GcNmdMMls4ObmtU8QCx?= =?us-ascii?Q?4UzgJ/4ppGzEa3jtDLmXhqNlirVBuQw=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 225cd326-7fdf-4bab-3d67-08df1d63bb58 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2026 13:23:49.4005 (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: cGgQBFGSUkOncuRn/kwlgz+ukmu0Vh3LSj07LJauWsugNTzclvqoWxrhGXBLZfeEJL0q8XfCRAHpWhRG/IqtIWv9Np0DTrTaxcuCa4vtouI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB7752 Currently, when a postcopy migration starts, the .vm_old_state isn't being recorded. Thus it remains to be set to -1. That might result into a VM crash in case migration fails: migration_iteration_finish(s) runstate_set(s->vm_old_state=-1) assert(new_state < RUN_STATE__MAX) To avoid that, let's just move saving the previous state directly into the migration_stop_vm() helper. Add 2nd function argument to migration_stop_vm() to achieve that. This code is mimicking what's already done in hci-8.0 and master. Signed-off-by: Andrey Drobyshev --- migration/migration.c | 21 ++++++++++----------- migration/migration.h | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 00924b4a2a7..8f33181e00a 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -157,9 +157,14 @@ static gint page_request_addr_cmp(gconstpointer ap, gconstpointer bp) return (a > b) - (a < b); } -int migration_stop_vm(RunState state) +int migration_stop_vm(MigrationState *s, RunState state) { - int ret = vm_stop_force_state(state); + int ret; + + s->vm_old_state = runstate_get(); + global_state_store(); + + ret = vm_stop_force_state(state); trace_vmstate_downtime_checkpoint("src-vm-stopped"); @@ -2460,8 +2465,7 @@ static int postcopy_start(MigrationState *ms, Error **errp) migration_downtime_start(ms); qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL); - global_state_store(); - ret = migration_stop_vm(RUN_STATE_FINISH_MIGRATE); + ret = migration_stop_vm(ms, RUN_STATE_FINISH_MIGRATE); if (ret < 0) { goto fail; } @@ -2660,10 +2664,7 @@ static int migration_completion_precopy(MigrationState *s, migration_downtime_start(s); qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL); - s->vm_old_state = runstate_get(); - global_state_store(); - - ret = migration_stop_vm(RUN_STATE_FINISH_MIGRATE); + ret = migration_stop_vm(s, RUN_STATE_FINISH_MIGRATE); trace_migration_completion_vm_stop(ret); if (ret < 0) { goto out_unlock; @@ -3520,11 +3521,9 @@ static void *bg_migration_thread(void *opaque) * transition in vm_stop_force_state() we need to wakeup it up. */ qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL); - s->vm_old_state = runstate_get(); - global_state_store(); /* Forcibly stop VM before saving state of vCPUs and devices */ - if (migration_stop_vm(RUN_STATE_PAUSED)) { + if (migration_stop_vm(s, RUN_STATE_PAUSED)) { goto fail; } /* diff --git a/migration/migration.h b/migration/migration.h index f2704a0e3bd..fc33ee465ac 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -549,6 +549,6 @@ int migration_rp_wait(MigrationState *s); */ void migration_rp_kick(MigrationState *s); -int migration_stop_vm(RunState state); +int migration_stop_vm(MigrationState *s, RunState state); #endif -- 2.47.1