From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020136.outbound.protection.outlook.com [52.101.84.136]) by lore.virtuozzo.com (Postfix) with ESMTPS id 7090381099 for ; Mon, 2 Nov 2026 10:36:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NxDmKAcokwWRHqPdv/Wb2YOCr1LdGUtz4kLEj4Vasy2evo7ec/bRDAMS1u3pkfiiyJKpqKeH8Jrwfz8CJPMdEoSf9URrQeZ1cDezFheBO4bcgGP52WxS3lCbNgzF4XfJ8/hxaoEKRcXfN1FmFNHfW5/aQj0Dx1dNAhJ+UYzjGsLX+zszwekkcOoieXlBIfNjJan7XfDSKfuASQqCn0hKFHkVFHEsZEIB82iOouGZ1hij5H2d1437CcEL0cYYLVaZjnguz1rgTFOrsEvr+lcJXZ1QKm8L7xJAwcIJ8s7TgLw9yN0ekIRKC5FtqVEz8CBUDdMO3ncw1JMqZQp5A2QEHQ== 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=s3lAFSDBPdKa4ZAphZbZl2TJYgvtZVxG6Xhe1hq6qKMzCGKZqOB/YsqocVl1FCRM9ahgnM1Uef5toyv39L1DyzKDJQM2iiQwV6uz12PT8Yg56EP9cg43j12Emr0l1J1C/EqBweK11W92a8oF2xEHAsC1lfBlStxV3GVkoWuOezB8btSNnFUBUU/n0wtdbm/shWaYdr4SQJDU8/BwxucFMU79WHbrfgPRqeBLghKuFF+ZLfgQcH9aR9GP8NKOoA8lycySz+gKFmx4GwxImQi2u8JqR6WlTXlmwbWj8Nd7CBBEIy3tDYRXWbMk11rbb43ewlmlpS/Ci/YdmqQSySXOwA== 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=IPajUT7L0xsCXUAyCjLxZFI1i1/WFoCj/cBnXDJVxhz3PeM+LpGGiNUmJ4t8S6YkqDCBjfZ52BW8zk6XjKg+wmBsNwXcPKAvAr2rBl4CscVhWw3YNvLKmkeuoMKjPPB1Jfu25VYRS9NXGxm2MLcnc1yFqotCYCzQ/s4E5dNEUDVz3rbviPkJ0jjRcPQuvd7lzmrRfd3PP808eQiZQ53+khrWoJ3i0yxVZNfZ3VkY2kCHI15s+hwPeF64LFsh0Q0evHWqxYDY/vBnN5xVwsMGBNg8B7voEw3IMh7QhhIoK2IEU1kvz1JW70JQKxKpcGcETJyrfrZ7Af9/cEk9GSRK+Q== 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 DB4PR08MB8199.eurprd08.prod.outlook.com (2603:10a6:10:381::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov 2026 10:36:25 +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.011; Mon, 2 Nov 2026 10:36:25 +0000 From: Andrey Drobyshev Date: Mon, 02 Nov 2026 12:36:22 +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: <20261102-vfio_v1-v6-7-9bc7cabc850d@virtuozzo.com> References: <20261102-vfio_v1-v6-0-9bc7cabc850d@virtuozzo.com> In-Reply-To: <20261102-vfio_v1-v6-0-9bc7cabc850d@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIVP296CA0048.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:353::18) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DB4PR08MB8199:EE_ X-MS-Office365-Filtering-Correlation-Id: 37302a58-baeb-4956-cfca-08df38cd2483 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|1800799024|366016|23010399003|52116014|376014|38350700014|56012099006|261009223027099003|261028144727099003|261021123027099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|10067099003|18002099003|22082099003|5113699003; X-Microsoft-Antispam-Message-Info: ancxGHQLvdHAusPYdVsCuwh6ObyCZVVVNOktkxINNGdiwAabs3oXobaNxQRcS09kj268gT8KLmsZr+lVd5Te1rJd3oVIb0HJBk2b+EPkr9HAbX8yhig2j17lxfoK+K8CortGYaD0khCkU7a0Tq9bAuFkgpznMRmM8xuTvUdOO4n+SMQz1Fvmx7N+WLzMCzwu4q9a92iKHWWGVUXSjhxeUsC7L2RBlhmmmsS36ighD+z3r7h5eN0zBCuF/I0xJ3DGXBgpExUQN/DIvN9GYc2pEYjTPjFa1AKm9dREmuS9PxyTZL77b9sZew1LMotFnX3Ut5mkDUl+IXjX2HSIBbi3ta6WlPj9gGu/AJ7eyWmP59ez/4L9BKFFqp6uwU/UNFqunMbHsjbCOEXhrmtsWSMrUWUrxzO0AmVJawqqv3S0rFGdrAjPg42eeUTyqe/hszvtrU2Ck1MsNsgmSdpyeC4bXTOOmmEXfoHtJOGn55Zsxv9bDKEWW64bPb3UoruBFng8YY49IM/qSvA31t7akenb2LtqAEBVLFmSB4far+busvhI92nXpygpJgOsb+WiFB+iOyYaKidqmfVT1ZObareHW9uUHFngQ0vxCE7g6QXTvXaE2ggWBo5qINVydB9EUWzgzfWf9g7v3e9GS/m/MKDTty5UjKv1qJVi5gYtwwzx3lURAzXuRKKxANr2WmOHAYW+qEp2Dh1cuZdQ7jTyk68LR1A/Mn5x7mpaYGYwsvwDcRk= 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)(1800799024)(366016)(23010399003)(52116014)(376014)(38350700014)(56012099006)(261009223027099003)(261028144727099003)(261021123027099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R0JlWjgzSC9SRm5mZEVhcHpXSUt1UEdQNHNqRmpOeFNwdmpCcXlxK2JtNjhN?= =?utf-8?B?L25mcHZwU0tFcTBkdktpR0lqRWFVVzFyakhPVi83N3lMR05ySHRWR1BHSnV6?= =?utf-8?B?VDMyTldRd0tqSjhFM2VBZXVodGdPNGhNcVRldjg5bDhZWkxUUG85Yi83S2xh?= =?utf-8?B?dXptYkxaU0l2OFFOaFdKa3VZa2p3WjFuV1N4YTcrcGx3UnVqU1cwcVdJckhE?= =?utf-8?B?ZkN2TW5YUUl6RVM5TnRNc0ZvcFliUHZuOExkblpRNEhseG4vM1B5bEQzTEhz?= =?utf-8?B?bENDOHZ0Q3RQeVlzM1ZZWEZVa09Ickh1azFTTHk0WVlZd1BndWJQRzE4SEht?= =?utf-8?B?L3ZJWnpNSWw0V2Z5ZTdwbjhKS1F2YVc1Mzd1UUR4RXEzOXE2ODA2OHhndGlO?= =?utf-8?B?RGFFZGowOS9IM1VVU0M1TUJiU2RQQk9tRll6cGdWYWJ3cmMzb2VlQ2ZWalls?= =?utf-8?B?NjBWK0NHU29NT3pTZk1IVW5EcTFGaTM2UjlrOVowbWp3c3Z5RmQyQzFrMERW?= =?utf-8?B?cnEvZjkzSFhHK1pTK0Z4cFp6Q3MxcE9YU09BejR3eEJBdmljMFVCUWQzNUow?= =?utf-8?B?Y0s5Z3MxdUpTVGdsSU52YnRzcGZsb2RNaUtjWS9aK1hSSG5aSVNJbHZtRU5t?= =?utf-8?B?QTAvRGwvS2xKeW0zNGdPeXFrUGhnNGJ0bXY5dzhWUDRxZTZmY1ZIN1R2QzQ3?= =?utf-8?B?eFh6QnR5TzBCditRTDZ2WWtKZFY0WTNFT0FESjFWZklmZXAxaTdkVGNBTXRx?= =?utf-8?B?cFJuc1RGWFJsVC82aytkR0o0aHhwOGpEK21LYks4MEtUUG9sMFV3dUxrbEM3?= =?utf-8?B?Q01kd2sxVzhlcjdCdHdUMVpkYlR5SXZwWEpOMGxISkxYQnIxVGU2WTJPWDRB?= =?utf-8?B?VE55NjduNkV2WHZkdkJKQy9zd2RRT3I3TG5MTEIvUmJqVjllaVlNVS9CSnBS?= =?utf-8?B?ZENwOVVodjNZb25DcU9qMzNoUVYzbk5ONldwZGwzVm52U2wzTVoycjBKWmlN?= =?utf-8?B?WWJBcGttVGU2V1B6OGFpNE15WEp2UTN0dUprWHlHSmx4UmVXUkxiZU9Cb01I?= =?utf-8?B?K0sxbFd6WnZBenlHV2VKN2VvSTEyWlVsMHZ1cTlQTkRiUEdTdC9PMGRNb1Qy?= =?utf-8?B?ZG9xSEt1ZFlLNWNvUTZnWkFUSzluRkVnRlI4SWV3OTY4OTU1NmUxWjh5Wmdp?= =?utf-8?B?dVZZTmNVb1oxUkVpZitQaklmTUVhYTlvbURLZmVCTENaWUM1aVNoVnByWlha?= =?utf-8?B?YURhaW5JQThqcDFPVm5pWUU4Qk5JOGkzQ25PVHNQc0RpYVBxSmdQYlpIZGtM?= =?utf-8?B?YUc5aEZCQjZKWVNxVjQvbzIyQ3lhWDlMalN4cGRXaHAvY2ZzS2d0TDBGUnNT?= =?utf-8?B?R1h4eUswNmQ3aGxpNEcrWkVNL2o0WnlpbEFNdnh2alF4UHZZSEd1RVNhTXF2?= =?utf-8?B?cm5TTzhmVVhucW9nNmtxQ2hDaHJUR1RmVnA4R3E2Tkp2eGJoNkl0T0ZpU2xO?= =?utf-8?B?QzRRd08wQWtHcFUxYno2TzVwazV5eXpiVTNxMHN2UkdBVXBuSFI1SFUzRzlG?= =?utf-8?B?dG10OXNPUEcyT0RJN3hBVUZBclBzMktnN24wWjBKeVZNOFZ5WmtFQzRHVUQv?= =?utf-8?B?R1doSXlKajhnK0loWEpOMi9aSWxnWHlXZmJZc01QOEI4RWtIbXRQa0oyMDhJ?= =?utf-8?B?cDVwUEtWRjVsb0dzTVIyYzRET2VNQ2NGeEhGbWVvN3lLTjNSSlBWOENyTkJT?= =?utf-8?B?NERUSE5YcEdFUkVQUjk5WVM2MmYxNmc4V0FEc2dnRWdHSkhuZll1QnR1d0JZ?= =?utf-8?B?ci9sUDZzaTkxbGFsZHRBaTV0dFU3ZTkzSHFxQ0pRZldsa0QwKzJTeFZsMUFE?= =?utf-8?B?Ni85UTljWlFpMkdBSlR6YnVaeUdMVTJPSUFjcG1WVmlVTEIyR0wvODcwZ2J5?= =?utf-8?B?SW5La1BaQm1FZEN4TEV6R0ZOcXkxcVlYZ3BwM2hudUdZcWM4VXRNQ1YwZzBT?= =?utf-8?B?QXNCMkNMTXgzNFBBNkJXdzRLMUlUbCtZblBKbWtGS0hDbThmRW9PVFRtSG5C?= =?utf-8?B?Q1c2WFQxeHVSZWxGQW5CN2ZOK3RRaXNMRUR0bXpUN3FBc1JESVlLckJDMFgx?= =?utf-8?B?aFlaZXVxbEdxc1lsaEo5bDZPYTZBeVJERmhlbW9IQlRzODd0bEZldWdBWllJ?= =?utf-8?B?eWp2ZEhBd3pKRlhaeG9majFlREg2TFdWYlV6UE91N000VmRnU25jWWlYK1hr?= =?utf-8?B?Rk5YbS9OdjREN0U2S3drdWZGMVU4WDJFVE95cW1Uams4d3VGVFpuTXdXblVD?= =?utf-8?B?T0sxTzl4eGhEYzkvVTFOTi9jeDdJNkZJN3NJcGFOWmtFZEtURXBZbzB1S3M4?= =?utf-8?Q?be5jVQ/Q8iqVKERo=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37302a58-baeb-4956-cfca-08df38cd2483 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 10:36:24.3043 (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: 9twgVYLw+V3pnipq5l8HiDrwQtVSaJZpAQlFwusP+Vp+mfUP7jvgilSqQZn59ojGfaFhkxws+Iw2vWNRHs/ZMK1Khl3CuW1lglOJ0V2cdQE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8199 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