From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021131.outbound.protection.outlook.com [52.101.70.131]) by lore.virtuozzo.com (Postfix) with ESMTPS id 5A0608045D for ; Fri, 23 Oct 2026 16:54:36 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VqI9KdT/D6yUISjs5KfppjIiI9X1RMyyC4S2cR9wwutU9WzIMr4JQHCqRtfKXVKyZw6S3wZiQv9+HhhKmo1ODALYs5UEm3Y+bMKfFHpXTS2XwlumEBVPYpNCyc6mCvZixjrfvUT5sEZlnczXnM7OJfhicC0v1u/95ey+h30Kh0Lr6W3IgubHAWkXefOWc2p77BuH3Q6pjriUbJ59MMcBlO62BpUUYsNYDe2mMn5npiNBZlqfr9vxDw58qGU32VR+FmR3L0sPMlM9Q3zXytP2gIXgWWX5zyAvyTLQYeJ2HgV0E9UUEhpp99k0gTl4GpQbAfu5b+UADI75ixFH/H3r7w== 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=s0gajz4xwJQHAyQ8hZt+K8yYG0rMS4jW3Q5HTup+ojk=; b=a6hoiZmZvd2jq2GG/Hd7mnwwJgaiDjHYcTE+u2MakPxNceMA++IQ+3uz4Ab7qNxjAx0fz1KthqlLQ+VA7McEmXucwWFVzLPYhRxGhAuWOAUdg/90vMbpB4DP799ARozHtdSJx0jNYM05QD2Lf+Vcgl78JNZ279zo0D540yP/B5Z1FfOl3AW6djiCSpfpO+gDVRi9tbiN/DQx17NoOg9shMG0FkvER3N0k7k3SKTwbcrShXXgAtfVuhoLKlnZ1l/oX/28i3uFvkVIpCBw7LZoOIufnjEsze/eyv/B1qAZnk5igsjnkOlYCA245LquGRDm+/mWOB88k4nyITIXaLtWQQ== 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=s0gajz4xwJQHAyQ8hZt+K8yYG0rMS4jW3Q5HTup+ojk=; b=emDqdVZpees4x21776+6Tlhc69a2OfU4PlpYh6JEYiKignViUIe2C9nFhS9sorWCX7kcsNtkrGH8bP3W5FhRmV4C5ZtpK/BxCbChA3wJVGXHJL3Ou+48ZlfiXMwBUj2wKoHn8y+CkNh6jmZoj8ZR2+yjpyzooVkTlSw31OhooAV3xmzGQWo5lVMp/5ib74Zc7k8Lv6+63wztnSd4O+o+c7q36xg2gRrcUX+e4B5fcClbkvSjOkIffid6lKT6w4tfrbIqyICtvJyQ62rdo+3TEQuFYggc1E3gT9kU2IMpD2auBURwW+2Y/23k8FmgRJE7okZBDtZ7FnPkhDFdMCsYtA== 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 VI0PR08MB11645.eurprd08.prod.outlook.com (2603:10a6:800:30a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.18; Fri, 23 Oct 2026 16:54:33 +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.017; Fri, 23 Oct 2026 16:54:32 +0000 From: Andrey Drobyshev Date: Fri, 23 Oct 2026 19:53:44 +0300 Subject: [PATCH QEMU HCI-8.1 v5 07/36] migration: don't refuse a blocker over a migration of another mode Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261023-vfio_v1-v5-7-ba0bf3c6d122@virtuozzo.com> References: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> In-Reply-To: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR0902CA0027.eurprd09.prod.outlook.com (2603:10a6:802:1::16) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|VI0PR08MB11645:EE_ X-MS-Office365-Filtering-Correlation-Id: 774561fd-fcf9-403c-43d1-08df31264799 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|366016|1800799024|23010399003|376014|52116014|5113699003|22082099003|18002099003|38350700014|10067099003|261009223027099003|261022105027099003|261021121427099003|261021123027099003|56012099006; X-Microsoft-Antispam-Message-Info: WyiPTNfzNO1VZh7pihWRyy3QOaZHZkGp9JKBlIfhkL+S+1DPgzw1U907G4LoZCYsKyJgU87p5gT+/TMfPP038vDX9oYg7zrmut55pQnHQ42Ah0l8OIg5uGvRHzC3eEWHFaqFhK+F7fTEusvLss/tIdMrURkN4DbaezG4EesT3QlzkufpG2yIXNkJbVPXXU+3bbvce4wnJwrk16E+S3ZBlao5i5KorZrUFFxRy56pqDSJ8H1xeLTmliuyj6YGPtg2y01CIkzj4pRIOIuvWtYPasai5Zt/GY4OipAcElj5Y1XGbuM5IM4MPiMtodYwS9vOqAEn2lmk2mHThR9WV0r6TxL3YJy6TGpVcD8EJ74KunIm9ZvCRJhwuNmuwZFLTcVuh2PKdTzcJkfGmR08wGJECFOAeToTRNiwUVJbyjzME5jtCcJF/UvJykMtxyvjmspHJ86I8kbLDHMuY073ONPsnSl9fveoa1kNr6O4YRBsZqoe6ug5eJcGIClce5CGlOO7QqFpbeg0AcnEe0enr+klLn88mmTVaHLcRwzCFuc+yqusYLW/7wFqeGIKCT9gLVDH0jerVhBB3g8hURQT+ab0jGiqJ4TEjkZ2+Jkp3C5QfcGKMeePOFK38zAzZQVEAr1dyJjPytwqMTrl8Q2nAFft2AI4cMpIzqVZaFS2duTbr0ZWrcez7UwZV9H/5Zsqhtc5UMHTjRmD7Q7I6Q0RZapqruaShCCPjJyxrSAfDdLaIus= 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)(366016)(1800799024)(23010399003)(376014)(52116014)(5113699003)(22082099003)(18002099003)(38350700014)(10067099003)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UG5Fa0ljdnVkWmdvMURqYUhLaEpuRlZhcTVabVV0eDJadmh3WldBaTRZVzZk?= =?utf-8?B?Sis5clZaZjJ1aFFUcVBxVk9kTTd0TmRrZnNIUGcwUk56L3AydU1RTGJkckJT?= =?utf-8?B?bk9mTFN5UnlFM0tMdnIwdlJzWi80d3o3RjFRN2RlSmVOT29UZC93NGl6eWdN?= =?utf-8?B?TWhCTVpzWWZUV3cvQnNKcEt1RzRZT09RY1gwaXRNQUsrQzB0R25qSXNsaTB1?= =?utf-8?B?ajdqTWxYWWNYdjQ0TzNybFN5M3pzNElZSUR5OW5uVWZaZ0VVVUE3dXBQZW5x?= =?utf-8?B?SnNhc2ZrVnlaTUlQNk9hVU9yV0VFZU1SNnh4OXE5S0ozRXUxZjdvNXV5K3VG?= =?utf-8?B?UmVZVFlVZ1J2T0hBaHJSU0R4eG5GK09KSnNUNHRUV1BZUWFvNnZwZEhyVUFz?= =?utf-8?B?UGRYa0JVeFJUT1g1amJOZjJWVlBHS2IzaDlnS2IyNEcybWZOU2htblhXeFJy?= =?utf-8?B?b05qRzBvOTNvRWVwNWNBWWRKamlCYkNPQ2xVaVpGNFRQUUk1TVZTa0FJekN1?= =?utf-8?B?M05SbHJORG92NjdPWFJQdUlVOStsQWkyWEVQeW8vb2M3ZURncjZkWFFCWm1R?= =?utf-8?B?RkpyV3VXM2dNeHRzRitCUlB3UC9GSmVxMWE0ckJpU2JpSXhYQVkySHA5Ynp5?= =?utf-8?B?bFMyZlhLVFNVZGpFN3I4a28vZzNQTkY5QTd1ejRSOHlrTDVCSnhjRTQ1aDIr?= =?utf-8?B?a2YrdEZZaFFaR1BIMUpWN2E3VlAwU2oxT3FKdlJjUHFzK3pEcTFmTnhLcmNa?= =?utf-8?B?WGZvaTA3NUIrSmFtK0RGcm02SkUrbVNVQjJoeHNzVWFlN0NxejIrbEZIa09o?= =?utf-8?B?aGtxYkZRbzBucXUwOXZuQXFUdElrT21IMnljMDNrZ1IrMWJSci9JQXY5UTR4?= =?utf-8?B?WTRtSjR2MGxxSlZnTG1YMFh0dDI5V3JnMjZhY1dMUkkwL1RiZW9LcEpaMkpO?= =?utf-8?B?TWJUTHNtV1dXVEl0VElTNHIyK2pXUHRYZWxXOG1yVHVrOW1TbUQxa05rRS9F?= =?utf-8?B?aDRPbTdxRzZrZzJqQjQ2M0ZOcGMxMFdFMEVxcWJTVmpzZ0NDMmdQRGVHS3JX?= =?utf-8?B?UHhxb1ZZVk1acHJJMVAyUUwzREhMdlQ0eWExdjdzT3Z5Z1hKbmswQlJaMnhJ?= =?utf-8?B?OHdxZm1VV1MxYjlnMzhzRjU4TjNzWndSd3U2TjJ6SkpEcXdXTXJ6OTRzajYy?= =?utf-8?B?MitUdmJ2YmE2OE85L2RtUCtYVWVMbWk3elBnSXZacnJlNU5RVm4rRTJNSGRr?= =?utf-8?B?M2trMU0vd2hoTVhFNThwMk5kS3l0ZVhmYllXcmNFZFYwSGVLRXg0ckZyWjdF?= =?utf-8?B?VDZ1Q2hJcEd2RTBDUUV1NXg0WmVQblNHenl1VmY0eEIxV0lkQ2ZVZU14Q3Ex?= =?utf-8?B?cG9yUlZpL0UxY3VGVUhMbzFnNzdYdlpMeTNxaDRCbVRpK0tjaENzVHhRWUVt?= =?utf-8?B?d0VPdUVIWEVhczA3OXh6ZzhVY1RFc1hQbEIxMzhnRzhINGI4Rk0vRjN3eStN?= =?utf-8?B?NFRaK1JURk83WXdqZGFYelNOU3VMOHNxU1pVcTVQQTRYVi80elRBQ09XWXhW?= =?utf-8?B?VEk4TkZKbkxFbkl4THVDQUVVTzFxRkRLcUVJdW1sbE5ZWWMvamwrU01FMCs2?= =?utf-8?B?OWNXY0p5S2s3NVdtOGFjdWNpdCtVVXN0ZS9tYktGaWJSbDBsVTEreThLUmd1?= =?utf-8?B?d3M5WjdPS2FYbStDSzJvVlQxWWFlVzYvQzljNzFITkRidlRIanp2YnpyN3JT?= =?utf-8?B?VW5KbmMwQk9qR2dDZ3pPbXcrSDlKYTJYUUY0RmhGdmFYNXBiTk1jWjcyRWhB?= =?utf-8?B?OTF3T1lPVUcwQ29kS3dlSVkxWDkzS0FXMXY2R0Yyc0pGQ3JiYjB4blZLNkVU?= =?utf-8?B?cHhRQkx4TUVEaE5MNGZqU2dpZ3JGYUZIdXhrNk9ibnNkS3plT0h4VEtpeFNH?= =?utf-8?B?azVCY0JhY3VVc0FTbm1jaHpmTUZpVG04czBPeG5BTWsvVzRadzJ4MklSQ1ZK?= =?utf-8?B?VUY5RXZIUlVuN2lTQVowR09RamlkQ1pqRzVMdVlXK3JhOUpqa042c003L3FI?= =?utf-8?B?RXpxNjBvUVdUZkpjTlRsOG1oeGhTcy9WaUlFMGd0c2FHTGVSQXBreW9vOEtq?= =?utf-8?B?eUFVdi9wZzBrS01BSERlYnVOL0xONlZseVo3U3M3T09SUzUrdFE1Z1Q1ODRP?= =?utf-8?B?ZkdkMzBLWngwNytOSmlzVFJicnZGNTJRS0JSUEZVZmNhWTJ0YTEzTEFkVUJl?= =?utf-8?B?b25ja1o0NUoyVWhzRTFuVi9uMEZ2OEpIb2NCZ1JTUTNxNzZFMGpBcURZeWls?= =?utf-8?B?WXdxcGFEaGFKNmo5djg5dko1eW9ORHQ4Y1NYV2hDTHpYTHhsTzhqYUJXRzBZ?= =?utf-8?Q?h9TOD7QINDRzHX4k=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 774561fd-fcf9-403c-43d1-08df31264799 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2026 16:54:20.4893 (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: /9LsfmspZlhds8wgCONngdkGAkZCoI9nRI0VCEXKH++sPDPtiWWYpQwmzTHCohzjwxo+xtHB4RBBUiDb7lvjliKSTVSr1tLdo+fjxrY0Cy4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11645 migrate_add_blocker_modes() refuses a blocker while a migration is running, whatever modes the blocker is for. So, while e.g. a normal live migration is running, adding a blocker for cpr-transfer only is refused as well, and whatever operation adds it fails, although the blocker doesn't concern that migration at all. Only refuse a blocker if the running migration is of one of its modes. Snapshots are checked as before. Fixes: fa3673e497a ("migration: per-mode blockers") Signed-off-by: Andrey Drobyshev --- migration/migration.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 7c2fd704890..d5a21da3129 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1866,12 +1866,16 @@ int migrate_init(MigrationState *s, Error **errp) return 0; } -static bool is_busy(Error **reasonp, Error **errp) +static bool is_busy(Error **reasonp, Error **errp, int modes) { ERRP_GUARD(); - /* Snapshots are similar to migrations, so check RUN_STATE_SAVE_VM too. */ - if (runstate_check(RUN_STATE_SAVE_VM) || migration_is_running()) { + /* + * Snapshots are similar to migrations, so check RUN_STATE_SAVE_VM too. + * A running migration only matters if the blocker applies to its mode. + */ + if (runstate_check(RUN_STATE_SAVE_VM) || + (migration_is_running() && (modes & BIT(migrate_mode())))) { error_propagate_prepend(errp, *reasonp, "disallowing migration blocker " "(migration/snapshot in progress) for: "); @@ -1942,7 +1946,7 @@ int migrate_add_blocker_modes(Error **reasonp, Error **errp, MigMode mode, ...) if (is_only_migratable(reasonp, errp, modes)) { return -EACCES; - } else if (is_busy(reasonp, errp)) { + } else if (is_busy(reasonp, errp, modes)) { return -EBUSY; } return add_blockers(reasonp, errp, modes); @@ -1952,7 +1956,7 @@ int migrate_add_blocker_internal(Error **reasonp, Error **errp) { int modes = BIT(MIG_MODE__MAX) - 1; - if (is_busy(reasonp, errp)) { + if (is_busy(reasonp, errp, modes)) { return -EBUSY; } return add_blockers(reasonp, errp, modes); -- 2.47.1