From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11022127.outbound.protection.outlook.com [52.101.66.127]) by lore.virtuozzo.com (Postfix) with ESMTPS id 6EA0B81061 for ; Fri, 30 Oct 2026 14:45:45 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TKj7y8GISBdTC0l13IKDsncP5ElVui/kUSWdmskn8DEjKvruCqVcdgD4vx4acpUrqUwcSJwUMgAmfCUGfQlDCZP96XY8t7zrcZb6rVhHMSxL0rxUfxogHRWqdvRxGyyICJ2jFzkrHZ5tXnxx0MWD7ay86UvStDz1vjNd6ueo0AwN2ecWeI12rUVOeKtJzh1ctthqz0nQ60LoLDyNOYtuRGvapBbFPCkuA4DH37y2agQSJJcIHorGky0Pk1JqSnXadzjMRxwG2pRAKHvFSuovtirR1oFYSA1MtgESXFIn2JtT3J4uis+t1Q8F7y+LY3EpiniAibz7MvjP+c1jtFKegQ== 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=e+4MHFvImLd79HvYpWzHGRXLZWkeapfnnRkOGg0rNErWfT9NYnLqMaXamAOClGnEWj/3lV53EJgug4MOFhVXb4tNroNmzboqtBuubBZyufv+7KWl0Rdlm1OZyOJRCqFwEZt7rd7il/T4qsCbg9xnlgDW1O79/26IJR2afyd3cRfy2d0EqI5NUnkSQdILLLKBJQO8PqMMBHNlH4ITcOUnM1gDYfQs8Z5k6/Z6pvkNmSS6SdLR53HikMTTSXbvwzSW6kZ3xbnT8Zh1ORlErqLSZMrUr3hXjTIeI5sftsJRAwcuV+QgQeWcoUt1KURImawxyFXIrCwRSZKAh+jeyyfhUQ== 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=zNcEUrdh+Y5UJPYscWzJIgTpztpsD2vw0VtORhTf6h5YpeJqZQCYOMPBEVdRQHDHB22gyfkUXO/ODiBhNQHiJmXoo+w+kmb6WN0vAkLlS0uVkSiCDpzeVg1ElEg+G2NLAEzNTJdf4vqMoDknEdSq8NSJ18yYUSxYIbtLMCPRRvi9uyrCfJ5iS9ZzqzliPI11asfrQR5/x5UV+vikGOv4UxuGElSiIvF9Vf2gzEeu+Td6edNbdO3XjDdFsIw5b/wHVFMZiYeTs7jpNlD1xh6iZbZYKmnMMWVTB7csdGiBHAqR3Crr1WVejL8Nui/zxNqWjJTniUlTzMzKfOZ8+hqSMA== 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 AS1PR08MB7451.eurprd08.prod.outlook.com (2603:10a6:20b:4dd::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.9; Fri, 30 Oct 2026 14:45:43 +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.0569.008; Fri, 30 Oct 2026 14:45:43 +0000 From: Andrey Drobyshev Date: Fri, 30 Oct 2026 16:45:38 +0200 Subject: [PATCH QEMU HCI-8.1 v6 07/34] 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: <20261030-vfio_v1-v6-7-45de246bc92e@virtuozzo.com> References: <20261030-vfio_v1-v6-0-45de246bc92e@virtuozzo.com> In-Reply-To: <20261030-vfio_v1-v6-0-45de246bc92e@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR0502CA0031.eurprd05.prod.outlook.com (2603:10a6:803:1::44) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AS1PR08MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: a3304cd8-0379-4ad9-a612-08df36947982 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|376014|23010399003|1800799024|5113699003|22082099003|18002099003|38350700014|56012099006|10067099003|261021123027099003|261028144727099003|261021121427099003|261022105027099003|261009223027099003|261026121527099003|261026140227099003; X-Microsoft-Antispam-Message-Info: jknU8aNIPqLdEIwvFwhew1HJbITwCg/TzXwzDezWcQKxE+KSNyIR1LWK6aiB6VRTfSaZfDHVFRLDJNAhwcAFko7qgSXNNnb9q7XZttrJ9TqxHKrcBT9XVOIylUQXG/8hk2i8LaiV2NOX942PXU3MuRrIN/uwQ+N2aOMU/nKxpoe+O/LYlg/jEDpg9ms/aGfrLblfaEAns/QVjKMeGeQlMOZ1LdFZ6Al0ZNSIna+eZ+5QpEHCiETWN58EuEdEj3ctAfSJz2+CjDcowGxmBcNUfecDjYcsGySr9E+GDpS6cOe+2wDBUJ0lmQGZwQL/oKpUTsbxxEob6SqNDxVk/Yna1QUJlTJ7Li4gvr4HbHYZAK7q+i/iJbUA7AnohCR7kY/McEOr46cVEsZC/2jT+mVO9XI6O030Tg+SX5bXWhQK7Pzk4eI/1jwhHieJuX9bP492+ULzf7vzQUD3exHwJdvyJVPSrhfGuiKfOvOAQayXWWpB2u7nuIp6BpUzxHbG4wPTAbJ37OkbcbartMbw3RgRtmgvzd45d4zL7zq/fgumI2f9xsGhZiyIymxCrmo0M5IHHPplnjGM7d91hHH5pPZC6pRWsVyhXR7qtEaaWMKuHI4iJJ4CL6/Rtyyy7yI+yo8UOt7Ze1J+IE0cAjpzOZd6p4L/M+m8Ped4IZsztgi+b2iGh6kP9oSPA1VJ+PR+pUuQr3bkNRLNZMwDF9ga+AIdsvlkMP2At1hbBOBgIWZ7HFQ= 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)(52116014)(376014)(23010399003)(1800799024)(5113699003)(22082099003)(18002099003)(38350700014)(56012099006)(10067099003)(261021123027099003)(261028144727099003)(261021121427099003)(261022105027099003)(261009223027099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WU5XcDNnSlFTb0ZDa2I1cVRnMExLVW9LbDBYbGduY2pHa0d3WEJxVU5nTzBN?= =?utf-8?B?Rmk0YytZSWJHb2V4V0xyY0JkZHREUHN4N2tOeUFHbStZSit2dEdlVUpzLy9a?= =?utf-8?B?OXNXL0NVckVQWXVYY0F3QW0rQSsyR29SdVgrVjBTVVovbmNoSFhWWWpSbFFq?= =?utf-8?B?ZFFERXRjNldXakZvWjZhVThCaXlSYi91NTdyc0JiUS9VRUNKM294LzhnV2hL?= =?utf-8?B?S0g3TFBCeUtoMHRRcnpBenZOTUVUbHRiQ1VUL0hFdTFrYzVNcVZqV29jYnZS?= =?utf-8?B?ZFprV0Y4QmRMbnhDMEIyT3RHZFlPdVJnbGVJei9pSmszc21CWFl2L0JNN0N5?= =?utf-8?B?d0wzd0pKN3JMd2xaV1RvM1NucCtNYVFtRGt4citWOFAzclM1Y0s0M0t4Wmg2?= =?utf-8?B?cys3UHhxc0YrdCt0QmM2S0w5R2RhVHVpdVZydFI4WVIxL1FPekUwdFFuZTBW?= =?utf-8?B?K3ZPaWJjL3VJUVNqeENzdTh3ZGFhdzFQWlFVYWd1OHhvZDEybDNtREFJZnNQ?= =?utf-8?B?T3NybjFpblo4cWlHZ0N3Q1ozRHVCcDhUd25keUtHUC9FbERWQ0FBVklub3pM?= =?utf-8?B?OVpESXZENjJKY0ZJM0NjdG11ZUdBT2gwMnp1QlhrQlpDQ2xtdVdPUy9tMzUy?= =?utf-8?B?dWd0YXR2NHR4UXNPeEd5a0xPVlhEdWJKNWtuYmJuWWlrQ24yQlk1bFFaZGYv?= =?utf-8?B?cC9KODU2Zk1qUmlSK29DTnBsN2VkbXRnQkhEc3Y3NFJCVy9MUUdXL0paajdk?= =?utf-8?B?QXdwbmVhdkozN3NTcGZqZ2R3RVZVTSt2SDBSeU5TUEsvRFdaV00vdm9wYjBa?= =?utf-8?B?V21Fdkd4dG1GOThDTlBVdmU3RU4wTEg5YUxGQTRtTHVXdDZlNHJvT0FKclhO?= =?utf-8?B?VDQya2RxRU9ldkZIN3ZmSUg3aU51RS9lVGNrZ3Vlb29nandrekJYTFJIWnBB?= =?utf-8?B?WWR4cmJCeDlQY2xFS3Uwc1J5UFJzaERRcjNWRWZtand4cXB3TnB5a3JaMXEr?= =?utf-8?B?T3RvZHJpVGgzUDFzcnNDZ3NpRGRXL2RlZ0ZBQXprcHpnaTRtNDRkajBRYTRL?= =?utf-8?B?VkNnYXo5ZW9SMDlJdEcyTEdqRFVJU0lFSkRTYkp4bUdsVm1OSkYxaGdKTHFy?= =?utf-8?B?Q1c0RlBuMTVRS3ZWZlJFS2IwWW9HL3ZNRk5uY0dYZmhDaWNGQVNTV1RGYzVQ?= =?utf-8?B?QUxGWlg1blpDSmpyZmlxcmJYNzVZbThHU1ZMNGJtdExIUW5EVWpFNjdnVHJr?= =?utf-8?B?L2pWTGIzZjFoS0sxQlBOQit4NXN3UEVNRkpUSHNtTWJkbTlubFVoNWFIcWFz?= =?utf-8?B?akt5am4yanNtWnFDMk1xSHlXTEtEUUo1UnBzN3hFRDRRQ2I3c3lWL2dMSm93?= =?utf-8?B?Ulk5dFZHb3huUitCZm5MMVF1djBiRzdtbnN1Wk5yd0VJNm4wZVAzMzV5cCs1?= =?utf-8?B?UFJ2M1JsaFhDc3lDb0JTaXFkM0lUb1hCK01hUHRGMENiVno2UnNpMEhBeXpy?= =?utf-8?B?OVRQOTQ2UGlpMjUwUllvaW9BTTVyMkwvOGZkakFuKzlzZG02REpLdVlLdWRw?= =?utf-8?B?bUxyVFZncUhwZEVQTytFSTdDczlEdnhiOVF0dkxxQ3lZMitRQmM3RjkwaFhG?= =?utf-8?B?VEVLSTVtaEZFaGdieWdvMkEzcFNVSVVNakM5YWR6TThVbE0reW1BaVRoYVZ6?= =?utf-8?B?Ryt6d2FsUmhLNDNEN0Z5L0x6dTE0SGdFQmpuSXE0bmlvOTNaY1JDVFpoVDNV?= =?utf-8?B?c0xmeVJXdWh1ejRTZFJONUliK1B4KzdGTUJIR0JJczRBNzUrQWh5dlhqVnMx?= =?utf-8?B?NDNHNHBvcktwcWlZeHVmMllYSTRPT0JmL1VTTWNkWGZ3bnpubmFYN3VOSEZu?= =?utf-8?B?alNHWjhxVGsyRHgyRFFOOXJtREdMa0hocGVtYzRIWjBqa29NWHZRM0R1dHdO?= =?utf-8?B?a0czdnI0RDlkMUZZb1hRRk16VzU1OTFYY2VWanlWbEZ1blJCK0NrMVZ4b1BK?= =?utf-8?B?UFZTMFcrWXNxUDIvUWlsclJvc3pleUxLSG9oMFNSN2JwSGxySUgzczNFVGxL?= =?utf-8?B?RklWUEEvd09GYkwvUEhOYmJOcGdKS1ZTWHdNN3dxK1ZGS0hsNWV3KytsbGhx?= =?utf-8?B?SjlNcktsWStUdFhuVWkrVXhMNXlFU2RObkVyN2M2dE4vSURRd3UyQWZCdm9L?= =?utf-8?B?c0lvS3BuQkxidEMwcTlLaVIrZjlBSUlMaXNpditKRE5xamM1cm5FV2tseWU4?= =?utf-8?B?MGtSd1dhV284Z29NNm9GZ1haeGVrM1dvWkowQ2U4WkpRdEk4VFgyeWpEckZZ?= =?utf-8?B?QjBPdVBFeTRKdzhPdjc0MS9qV0FOQzEzcEZRMnZUa09oaTdFbFNWQ0hKQnVz?= =?utf-8?Q?4BAZc83dYGDrQ38w=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3304cd8-0379-4ad9-a612-08df36947982 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2026 14:45:43.3084 (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: gr3S80tEPUUZTwvao+SFfVvkspEvCD7xWek29Tb/4I/hgvCOmBpFCbXUQOGgdp8FL2f75g4LR+rG1TxAnd59yf5hdPVXYitW4BDkdoUCXws= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7451 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