From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021100.outbound.protection.outlook.com [52.101.70.100]) by lore.virtuozzo.com (Postfix) with ESMTPS id B5738802A7 for ; Mon, 5 Oct 2026 09:05:27 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=q0gFPQSUgh/yLcHZVW+k4RccMDvxIMraXKlY1utI5I+PyDdQL6eDqI8v1y6qBPWLY0HURuwSaLpg/nSdvkaWQ4ZRVDLNTB+xEYhE870DX4xVmPmCzRV0qs1VHxnk61qHJfyRW5haPTA9sd1wM1xDOuQhAGPJxKAWMzEou1P9AGczButGarUey0uc+RSO9xGtRIXgpLbgNNyU0X+UWmvQytPgWCMNoXzwHy/5lRbqXNTqHsxlA2a0g1JhrZWGJRp0uBkZXOICa6oLzEPXC9W2MlIffoX2KeO/nfymzcUOyJJRASPaP14eIZ2i6huWUZleCTYcEJ/a0PojhA6AVIyzcA== 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=mKNOl8jZSIO7sjU9O+x9B3jFj/VGk2u+5C6k4QfBLsw=; b=GR76lEJdiVAf0ToyTFCCMneZd6hM1TZrThNoe0YjTbVUmKngZ0aTEdTzcDG2FLrt7pW//M6QMLtEuwf39fEu4kv7qTmBOHFb1cFi9w+6fSHSE9kR4TcO9Z4alClmIcyPex/Kt3MeE8L4bsXTRWQ51QO7G04c2QG6FKDqlSZMfdSBWykL/oJQXw7SPElwVEbOqE7SWiX3VLpkzsqIn5GS8j/iWma+2q71yJxxCkWEWyFhu7PyP1aS12J12h7eRnCXLPUevESOr8ao0hr394XbuCKwrPmrJIf0KTgd+IPxX9h/2a1Lw6jydY+39c2rguR2GOkT7AUTPb0UPfDQDQRrKA== 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=mKNOl8jZSIO7sjU9O+x9B3jFj/VGk2u+5C6k4QfBLsw=; b=D78kOibONC5G9MjvTnOP66XwiccLKONFVpDpSLj8vZal9pvxGxYPsfhHgWYbELMguypFh/vc4IJwKqXEwbmju0ZOIHODx0iMIV1AQuspT7d0arse0d54DY/kgX9kN0942pWUpApukHYPout1AQwxJ5rGFy12UfbAIZKfedMwpl/2O2Xt2sIieyb/y8nC6Fy7WW/Cepn/863bpnB11HAUtoUEaYtsnPcgVf100hL1Hc42UHOQ/0oMMVNEBp5oiflGvEgzYPzsTiclMJSYoeb23zkHqPrsN5nLHFziw4KfRdD+BCRK5iSsx7mAhe+wM3y+dOLUp797G12pR+cDytuSzw== 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 VI0PR08MB11019.eurprd08.prod.outlook.com (2603:10a6:800:255::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.496.14; Mon, 5 Oct 2026 09:05: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.0496.010; Mon, 5 Oct 2026 09:05:25 +0000 Message-ID: Date: Mon, 5 Oct 2026 12:05:24 +0300 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/3] iotests/migrate-cpr-exec: cover chardevs with logfile= #VSTOR-148304 To: "Denis V. Lunev" , svt-core@virtuozzo.com Cc: den@virtuozzo.com References: <20261002164853.2130337-1-den@openvz.org> <20261002164853.2130337-4-den@openvz.org> Content-Language: en-US From: Andrey Drobyshev In-Reply-To: <20261002164853.2130337-4-den@openvz.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0109.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::9) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|VI0PR08MB11019:EE_ X-MS-Office365-Filtering-Correlation-Id: 70c1eea3-0c62-4fe0-056e-08df22bfcb14 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|376014|23010399003|1800799024|366016|10067099003|56012099006|4143699003|5113699003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: r9V03uGOU9dzCY6VLswA0MmufpjJ30bjTdB0RS7ru4j+iQ9W2+/57u3yQa9sPtZK4YTaNcLqrYpFdZBLzraoOQuLiNyUMXwkjxBgGmZ1uRXhUPlpwqLPbkUuPB3RKZUPF9otJXuOOFSRPrEgspd+KzPIQIyhfP2Wv4ucTgkH3vwxiCaud2NOIrQ685saLkto6Xxp1Qmc9xExm7GWsjyT8HvN5ndq+rpt2qIPRJ6DeXNDGRE/MUPIdio0VHtBjFbAauuKXU7vy6gpwF1CRSEMgQ66C1Rj8fZgckdfaWmNS3TuKqfauyV4qaEYxA6I7W+CIiKsP9uokvW+SlfnJoPu26qnB+c3SF8RIgybWbJEOd6yoEJRaalv794gZ+WHVxCSatHGvs/VF/jjeOWONze/TQipNOp/nATcWcMifj8j3VNe4JJXBMvJl1zsZHDlmqJBNeGRVEPE/S8J7gNYC0RmZwtjkc/83WFdSsnCKNN1l7CBv0KH61l9Ow+l5usnkB7vTNl6T2C08S4DK1/LzcW3+xk5Nt9FIuoKMU7GVGJmH/lD81GoZNkY6YhAXdbfPILim49JNFIsb3SKyAvhaBIbc1itBAI2bKninWA6fYI1i3lJw8QzxuHZ849hWCfas0spTMspzr2oGTJ1REeo4JXzh9k0DXi+TjzwG9M8E5Weae0= 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)(376014)(23010399003)(1800799024)(366016)(10067099003)(56012099006)(4143699003)(5113699003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aTE4VlJ0d3VnVG5qRDVwQlUrUXljYkV6QzhrV05lQ0NWY09Ba0Q4QVIyUG12?= =?utf-8?B?aHNuTzJUZHhtRXhEVE4zVmtOMjRPR2JIK1VEeDJmYnlTMGs0d09TZ1d1STg0?= =?utf-8?B?VHVEelAwbHUyV3poT2tYZkdiSElUSGh2WTQwRmV5dnhUZ0NVUllDalpHSHIv?= =?utf-8?B?MGlmT2grUXVESjNXbStSNzVQczg1SW1GVVYxYkU5TWFuZHk0VmdFTzFIaGZp?= =?utf-8?B?Y1duM1h5VGhEdCtEZjlHdjQzbko0YkJic2tSTTM5cm42ZW0yMTBzVUpwaCt6?= =?utf-8?B?aE9aSDhLTjdwYkhTNy9MNnZISFM4ZnVDNTEzbEhRRDlDekU0RGc2NWp4Q3FC?= =?utf-8?B?MFBQMkRXLytaS25raDBYTVlJSkcxRklXbWlGVldnbnBVMDh2aG9uM1YxVFpr?= =?utf-8?B?L2lyeENVSkxrQWlBY3V2QUw2Tk5Nc3RyUTRVQWl6THhwNVhQcWYwQVg5WG95?= =?utf-8?B?OU1GRlFGYkhlSWd1emgvTWRwK0xPcjIzNCs3dWRUTEpGekhMQzViRW4vcHF3?= =?utf-8?B?S1EvWit0UThkQnlsUzhQNzNDbkt4N0xybm5xblROdmFZamw4SkdoNUI3eWlm?= =?utf-8?B?U2Q1eFR2MjhUSlFxNDZ0bk9BbFpuWVNGbnZuVFZCdVFLdWcvdEM5dTZEUkZk?= =?utf-8?B?ZGo0UlVZMSsyTnBOaEh2eGFydU5zMlkyMmJrNkYycy91ZDcvQUFmY3l1L3pB?= =?utf-8?B?TjhCTk9ZNVdMNnlrcG1sclp2U3JZZ0FZUnByTE5IeGliQk9YbHVidWF6SFdG?= =?utf-8?B?Vk5tZnZEUlo1NTY1aGJWVm5XUHlVN1prd3J0ZVE3NmlKZGpabUN0YlN3RzdT?= =?utf-8?B?M1llWGs4ejB0Z2k0V1Q2QW5UN3Rrc21uTkc2VG1pMDhiTzlhaytyc095aXcz?= =?utf-8?B?V3BWVGllRG5Ta0djUnZMSXBEMHlnQ3o2V0tvMy9pWGdsZE1tRVc5MWdaOFJU?= =?utf-8?B?dnRvK3Uxa3BUZkFMSWw3SFY3SlhYNlE3bUN2eWdrT3FZeTV4YVpNdTJlbzg3?= =?utf-8?B?MHVndk1Mc1B4bGkzWkxlOCtmdjJhMkdKa3dLV2dsMURyTDJJKyt2OVNub1NJ?= =?utf-8?B?NFpyUGpEOGpEZi8zRFU4ZGpSL2RiNXRxbDNCKzNkS1dkUFg0TU9KeUZDemRp?= =?utf-8?B?ck55Q24wTkY3aGRtcEtkVms4NkdGbHNINkpSR3JMbHpLN3BiRi9yMjAzSzVo?= =?utf-8?B?KzBTZzNTR0RHQmJIalQxRUtnVHhpZDBQSDZKSjN1NWtzc3dRWlVnaUI0K0VR?= =?utf-8?B?RWk0R0ZielBaQkVGbmpZTUYya2RXUVhKa1R6SlBOaXgxUlBqS3cxM0hPNW9m?= =?utf-8?B?UWkzSWZLTjJTZGtEQWJaTHYvOWVEQ1dZUnVTUkRrR2VPNFErZUxSMDUwTWNY?= =?utf-8?B?aG02aDNMNmt3d2JnWk1jWGpWbzBHeGcvc2xMbzlyaWVCcDVtdTAxbkhRVjV1?= =?utf-8?B?aHozS0VxcGs2VEUxdnZoN0dGK2hRSW1ETDJFK2ZsTXgwSlBtVnNnekpVNSs5?= =?utf-8?B?bHorc1JubGYrTmZiNHdCSU5NYzNRRitkZnpCVE5KczdYVVJjVUdJKzhkMm5y?= =?utf-8?B?NUFnWG5yQUZMM2wxWU5VUlNpaXlCc05jbGNFN3ZhaGRYc1FyRTQ0enNSQXgv?= =?utf-8?B?SlpOVjVaS0R1SVFQR3hidmNTV21ra3dXdFJIb0tCL1pmR3JPQTY3MXRmK1pq?= =?utf-8?B?RWE4Tk1TNkNZd010UlowWURYSU9xU2pLRGw1anNBV1ZUWmx4VUYrSk45cVBy?= =?utf-8?B?ZnpJclJSUnliRDZqU05ubHVEMFlYMlVJRDhodzJsZWlKcnVMTUVMM3dPSXlY?= =?utf-8?B?MGhkUm5nbVlBQXdXNU9rWGxWL0lFc240MmUvbHZZVVl1V0xXM2tjOXgrbHlx?= =?utf-8?B?UlZOZFVabkcxMExvRFZ6aDRtWFNXMC9Rc2VvRys4T0ZsRXhpejJWdHRhSEpm?= =?utf-8?B?ekM2dEovRFFBNFpmZkdsV25senk1SFFidUIzUXpXZVhCUEw3dU5KVFpMQyti?= =?utf-8?B?T3NTZGM3SzJjcExxZGVqK0xzbGsxZURaOTNKNnpoWlpvbFVxTVkvdnkzZUMx?= =?utf-8?B?RzJzRVE0T0puejJidnZreFkvaGFhR1BCb2U0TWQzZHNkMVQxS1d2YWZGR0c2?= =?utf-8?B?STEvRkdpRnYyUTRJWUVxZDZpakxXaUozT2VNYU44Q1ovQllLZFhzZ3dvQ1FO?= =?utf-8?B?WWhJWXBDKzlFNDVGWllyUnlQMzhNalNYL1RnTk1IbTcrNE5aekhpUVlmMDYv?= =?utf-8?B?WlNDQjRWemZyczBJOFVSN29yYTRFVFJjaWF3a04zSlpNWUxZdVhZSkJuN1VZ?= =?utf-8?B?MzZRVzFRVDBlWUppZU9yTlR0NTVZdWczUXlicXdWZDg3N3dMZDViVjRiOVh6?= =?utf-8?Q?ZuxsAgjD7eI5fXto=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 70c1eea3-0c62-4fe0-056e-08df22bfcb14 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2026 09:05:25.2339 (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: +SpYIIAvH2ahNobBP4giF2615nmG3rmTvV1OZi3FN719n39SBrL9+Vykrpdz1gcCUBGDWvqD78BZhcmCAMbd+SoLKOCX4gkxWl4Y5vdSBss= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11019 One important case isn't covered. Namely, when source does NOT save the log FD and target has to proceed without it - what we saw in the VSTOR-148304. 1. Start with -chardev pty,id=char0 (no log) and isa-serial. 2. In the pre-CPR hook, replace that arg with pty,id=char0,logfile=. 3. After CPR, check that the VM is still running and that BAD_LOG was not created (put it in an existing directory, so a reopen by path would show up). 4. After shutdown, check that self.vm.get_log() contains log file was not preserved, continuing without it. The exec'd QEMU inherits the old process's stderr, so the warning ends up in the same log. Please add this case. On 10/2/26 7:48 PM, Denis V. Lunev wrote: > From: Denis V. Lunev > > Run a console pty with its log in an fdset, a guest agent socket and a > second QMP monitor, each with a log, through cpr-exec with a command > line whose logfile paths cannot be created, as libvirt's is. Cover > chardev-change to a new log for pty and socket, and a failed > chardev-change, whose rollback must keep the old log preserved. > > Signed-off-by: Denis V. Lunev > --- > tests/qemu-iotests/tests/migrate-cpr-exec | 132 ++++++++++++++++++ > tests/qemu-iotests/tests/migrate-cpr-exec.out | 4 +- > 2 files changed, 134 insertions(+), 2 deletions(-) > > diff --git a/tests/qemu-iotests/tests/migrate-cpr-exec b/tests/qemu-iotests/tests/migrate-cpr-exec > index 51e6cbcd659..e8a6c502c84 100755 > --- a/tests/qemu-iotests/tests/migrate-cpr-exec > +++ b/tests/qemu-iotests/tests/migrate-cpr-exec > @@ -288,6 +288,138 @@ class TestCprExec(iotests.QMPTestCase): > '-device', 'isa-serial,chardev=char0') > self._test_cpr(pre_cpr_hook=change_socket) > > + BAD_LOG = os.path.join(iotests.test_dir, 'nonexistent', 'chr.log') > + > + def _serial_write(self, data: str) -> None: > + for c in data: > + self.vm.qtest(f'outb 0x3f8 {ord(c)}') > + > + def _open_files(self) -> set: > + fd_dir = f'/proc/{self.vm.get_pid()}/fd' > + return {os.readlink(os.path.join(fd_dir, fd)) > + for fd in os.listdir(fd_dir)} listdir() and readlink() are racy here. Incoming migration cleanup may still be closing fds at that point, so readlink can raise FileNotFoundError. Skip fds that disappear with a try/except. Andrey