From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020123.outbound.protection.outlook.com [52.101.69.123]) by lore.virtuozzo.com (Postfix) with ESMTPS id 0BD3F8017D for ; Mon, 5 Oct 2026 09:47:13 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V9n/VMzjsaXcASDjCktvfVrruC+riZL1Qzsybrk8xwBYSwQfSwLMKCquBGMTrWugR1v1uXdrPquBrvVj1E1yg+ohkuRBf+HmYOOE5dUuvmdHaHGevMlwt3bSQawlHeXbyqt2uTAY2rPG2BrDtL2gWEzYzdP7KehPwk0J1rTxP5ro3a7PZEDVPaeIkRXbYgVAC49qiDGGBQn37ErnzeNPJoOxAd/kz50SwvutP8IakigyhJWXsgLvLXo6be79eB9cU2qCI7ArgEKgX4WwhoTn52fqBCPcLjwO2cyvo6zbfR8W5cWqsRs62ut5XxKhtZWU/qLZSbLkz30N4uaUKFkazA== 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=KhxcWzrTvhoz9jUNLar8M6rNgMmVwuViStjOzWEHamM=; b=V1lcgzFDxTZvyKzD3z89xJ1evz1uKjlzuZi8rgXSMIJiWx6U9mwG5y4L+PpgN3nw9GxV+WScoUlXvXPTb72liJ3R6+KbA68gPFmxU5IR4F3rxxhkA4b5RZ1/XeNBJN9s7VHytplwpPAkDkbO4ZcK9lycvIOObMfgIAm5dRcSnXAxQQ2zZ/JjB4ge7HsnsaT1EBtnviog1hBC9rkHDCI7xf/lPhZeT7I9EaG1XsNEgMK2sCsnou7QmewoFd6sWwtBHZ+yRr5dEN3umaT3Mt0DWowVT8E5jUP8KYT8c09CpCbltxYz8hD6oU6syDzfagLuLcogNq0jQXhKwyt4NyKkGg== 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=KhxcWzrTvhoz9jUNLar8M6rNgMmVwuViStjOzWEHamM=; b=CA9/iTAyTcJG+FcTKW+uc3fnF2lR/kV03U8J/yKCceu+wan8k4ejjyhU+0CGF+tEFwC0n4KjDy94Lnh/Agi+SPye4fBjrniihZrxdNnptH5PUGsVbkSanp2uvccBEwvd9hkqEXDsoMV5NaCbf7q5UZn4xmtR4TqR41/xDSTlb+4LDosCDg1KkWPp2LJUu+1O3OW2h75XgMo43HoUsnaqXFlr8XCx9Udh5nBMwfWJphxkoDwTXMZRw6oPXTmztXkP3wb0scyBaDwPoK9sQRnm+QyF+0Liy72mxqMSAOVpec1cB0F0PfSi448Z3kl5veGwQDp2O1Flr4Z02xVUS7SM6w== 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 AMCPR08MB11969.eurprd08.prod.outlook.com (2603:10a6:20b:76d::14) 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:47:09 +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:47:09 +0000 Message-ID: <1815a20a-af2a-4a7f-a0f8-b3fac14c9edd@virtuozzo.com> Date: Mon, 5 Oct 2026 12:47:08 +0300 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH hci-8.0 v2 0/3] chardev: fix qemu-update destroying VMs with a console log #VSTOR-148304 To: "Denis V. Lunev" , svt-core@virtuozzo.com Cc: Maxim Nestratov References: <20261005092635.3564485-1-den@openvz.org> Content-Language: en-US From: Andrey Drobyshev In-Reply-To: <20261005092635.3564485-1-den@openvz.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: ZR2P278CA0008.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:50::11) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AMCPR08MB11969:EE_ X-MS-Office365-Filtering-Correlation-Id: a4232bf0-37e4-40b5-c3d7-08df22c59fbf 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|23010399003|1800799024|376014|18002099003|22082099003|3023799007|10067099003|56012099006|10086099003|5113699003; X-Microsoft-Antispam-Message-Info: soAAwb0E+n82QYdVue6NUsDSAtWwjkibparOo7TxOJLXCts+xrFWXEgqTT14MMvY8xTv7YOUdJF4nCFGQBICqSYb38dTTGWFbe5sL4rmcFH4FQtwZTZRDweKkSN2A/5MUlN/S0MHaxiT+D170ogBcZ1pnI5vXAahTmF82WgZn9/UVIbZbaaCCqJjlzDUJhp0J30fUad+Gaxze/VbUoFj0d9e/YKqr6zGX64ajGtTZOQM1NS6LTN1w45wl/xN/1arhAE2AesCbnGrmulKvLi6PR+L5mQFkxCiU2XeiJxHyo6bbpE+3NXMRe2ZmzgeK1kVmbtDIIbgFSKamjqiOwJVFwsQ+v6CpCOMqHaXS6sLIdW8IVlxA198gGb192vVXYByE+nHDysUHrvH/ikMZ8KwtuEK471+Zlr6vI/ROwvq/8b+EKtAHR1wLNcdWsc5hEXyX3ABv+UJjAWSTM5CeO4O8ynXdPrCeTToU5ChpuiXEZSqfOmXsfJJKgW8fwmNLfrRsnnu/6WPhmGzNxodzVycfRvk9VV0UBS4idLSidPKBX7e/AkRAnKybj7AWhd2uI/G9XkBm58JCKhkhGIhcy93FvXhvwDqLlaR+xV6cY8NIo0xbsP7zf0KKsalW4Nwo08S6djelJwc+iUyhzqqFlY2d5TeALtcHznp/4AqTpRnPmM= 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)(23010399003)(1800799024)(376014)(18002099003)(22082099003)(3023799007)(10067099003)(56012099006)(10086099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K2tGbEhRcHBaeHlKRmdiZzNxNXBRTkt3aCtiamRSOTRaUEx1N2ZhK2hFK0JS?= =?utf-8?B?MFJERWRjSFBGUHA4bkpqV2FtdTB3ZmVpRzU1M1JWaHlJQktHeG5jN3p3MVkv?= =?utf-8?B?d1I5L1ZhcjZEUlNxcVFlWk5ycVc4Rys4ZUZ0bjdRYXE3a0M2UEwvZmV3U0Q0?= =?utf-8?B?RytQR08veWZRRFdHQUhTZ1pJbmhvV0NXdlR1NGlRRDdaNWEveENuQjRCSWo4?= =?utf-8?B?NGdiNTNUSmxvVHBDbHljVUczRG9rT3NTY2gwSHZQdGw2OW1sZVZKSlNmazl3?= =?utf-8?B?ZThNM0xvMGJ1K2FkVE45VXhkK0ZoMTZFRllHRGNscEk0ZmdhQjEwaVNsUDYz?= =?utf-8?B?VUUvZlBJSHYwWVZNQnJ5bEZkSkJhTGFLc3VCdTRDNVo0K09RUWJyVHpQWTVh?= =?utf-8?B?MG5DcGZ6Y25JUHBWOU5GeVRZa1RZbDB3bFpCYk1pNnRwMXIvYlJaZ0J1bW5S?= =?utf-8?B?VDhxL2NSMDl4aTJ3VW5POG92RE55M3lyckdNVUNqTWYwVEdjTVdTbnFEaDl3?= =?utf-8?B?WnZlQnNEVVFhTkxJZmlNUE1JY2U1cktSV0NJR1FWZG9KaDNqbkswSkMydWM0?= =?utf-8?B?RWVYaGRmU0dvemlCR0Z5T2ptUy9UaDJSZmZydXN6ZjRhdXVISTNiSWpZbmlh?= =?utf-8?B?VVZmYmNCSkJkLzRiY0JZSUZMZURBbHJ6RVp1L1Iya3IvYmprNlBFZzVocWNM?= =?utf-8?B?cVFIbEg4T2hZY29XM1ZhbjRDbGxTQUplN2NrN2tvRVk1MjVGaTg4eDdhb2RN?= =?utf-8?B?VGoxMXpUYWhCdGZ6NDA1bzlpQ1ZZUVVyR2l6U3B0dmQxK01CbFJIeWMzTFFC?= =?utf-8?B?RkQyeTlTQlY0Rzk3VUpFZUE1STRsV3ZVMDM2REh3bm8rSDBWZWlZUUJKYTJB?= =?utf-8?B?MzloOWd1YnIyUnF1QUhIWlJYY1RqcVB6dnhjaUg3dTRBSWtHTjFzSHdYSGdo?= =?utf-8?B?Q1gzSzFUQS9kRUxjQjlFbVh1UlpCcVpvY0IwaFBxTno1U29oQ2ZRSkF0ZVB2?= =?utf-8?B?d2tyYmJqalAvTWdxcnNYNk92TFdmTmRNT0pSbGNVV3I4aWJSMDY4clZzaG1J?= =?utf-8?B?Zmhic2RJUk94czAwY0VJY0tCK1dNVEhXRkNhdVl1TUJxZmoxSGwwV2wrOVBw?= =?utf-8?B?a1BNSHlDSjRNZHIycVQrcS9ZM1pjaHRXVmgvV2d4bThFazdlL2VRSXJjelhF?= =?utf-8?B?V3JVcmcwdHB1aitvdDFZRVI1L0VvZ0dkd3l0YjdEMnp5bUpDdlJYckxOZVQz?= =?utf-8?B?WWQrRmlJbnhyZkRnaGtNNWU4TTdmZ3p0V3E2YXF6YURWbVgxUlVUWEo1WHZh?= =?utf-8?B?NXFkY0pMYmY0UnFkSU1VSzdTRHE1bEpEUkdqdlNFMm1KK2RYamdkcnNRZW9m?= =?utf-8?B?Nnh3MGhyektnUnFiSExZUGhwWG15TU5rdTlpaE1NcUxSKzNtNnF2b3RCYWRN?= =?utf-8?B?SFYyaXY3ZlUvWVN4cjNxWml1NUlCUy9JUXlCSUNDZmFvT2NkODdkYUFWUE4r?= =?utf-8?B?cHQyKzNYMnRUOGU0dzNySTVjVE1ZVHIrcTFEVVZOV0FWc2xwN2RyZFdUN1JU?= =?utf-8?B?ZFdLTzZuOUw2MkRxdmkzMU9YeFJOZDd5YkdnbkFJV3RqOWFnUVgxM2ZQc3pp?= =?utf-8?B?c3p2aUJxQTI2WityODlQTklKZFlETUtiK3ZUcDZicUxEWThxV29CS3JHZTJ0?= =?utf-8?B?dWNnTUZ4UVFuNWdGb0JaVXJmWEpDbVZmajBBU1JLMkRaRkdPdnhBak43ZXU1?= =?utf-8?B?eU41K1RLektXVm93QjJZOEN3MVc0SlpCZEVXeWxtSlhlOFVQeHFsWGROSDVp?= =?utf-8?B?V2xxTWZITkVvc3FiMlZPVTVVSE1SemxjRmMyK1Zid21JNUcvVnZYQk92QVNG?= =?utf-8?B?cTl1b1dZaVNaRnhOYjRoMWVzYUZZajNCZnFhRDNpTit3RDh6VE1FU0ZVM3Vv?= =?utf-8?B?czlvbkcweG9CcHcrMXgzQzJxczJvTTlLSndFR1lwYmhQbVdZQXhsY2NHc0ZV?= =?utf-8?B?MWt4RXhxWUpML29aVVJTcTdPWVpLTE0wekpweTRWV2Z3Y0YzcHpCcFRzckxW?= =?utf-8?B?N3c1UEdhenBHV3gyVHRQT1YwSUVQNzFuOWFYN09OWWJPZVhZaU9HMmJzS1F0?= =?utf-8?B?T1BsZ0xHMndRT0dFU1RaalFOWit2bktSaDBSa2ZyY1dRSFFPRW8yVVN1Ni8z?= =?utf-8?B?ZlpUeXhnVzBJenV1L1VYakY1SEpqVG1HbkYyRWw1VmdHQzZFa2VoZTNsRHFn?= =?utf-8?B?SjZnZ1lLM01VWlJEK2RZUm8vTXJ2Ukt4ZzkwUFFaNHZVbXdEcGczZnFPR0Jx?= =?utf-8?B?aWdkOVVoRnorYnZ3NUZaV2lwaVpGZlZKMVNUZkFzQzNIekRuektUUWIxZjRi?= =?utf-8?Q?V7uhA/2cH2gtl2Zk=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4232bf0-37e4-40b5-c3d7-08df22c59fbf 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:47:09.5234 (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: N6lAN7IoJfsFWezN9WIpQzqltw6gf8uF2BPdhjHmYwjU3PVgiVYo21dm3HhGI0D5N1h5QIU1vth+O+2PUmSIm+fSNmw6S0AJJNS5C7gTnF8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMCPR08MB11969 Reviewed-by: Andrey Drobyshev Applied to hci-dev On 10/5/26 12:26 PM, Denis V. Lunev wrote: > qemu-update destroys every running VM whose console log the qemu user > cannot create, which is the case for nova console.log on node-local > storage: > > qemu-kvm: -chardev pty,id=charserial0,logfile=.../console.log, > logappend=on: Could not create '.../console.log': Permission denied > > and the update stops on that node. libvirt passes the log to QEMU as a > virtlogd pipe in an fdset. That fdset cannot be carried over cpr-exec, > so the qemu-update command line names the log path, and the new QEMU > reopens it in qemu_char_open(). On shared storage the open succeeds, > and the VM survives, but QEMU then writes console.log directly instead > of through virtlogd. > > The series keeps the log fd, i.e. the virtlogd pipe, in the cpr > registry next to the backend fds. The new QEMU never opens the logfile > path. Patch 1 gives the base chardev class a cpr_claim_fds() hook so > that the log can be re-claimed on a failed chardev-change. Patch 2 is > the fix. Patch 3 extends the cpr-exec iotest. > > No libvirt change is needed: the path in the qemu-update command line > is no longer read. A vz-cpr-path placeholder there would make an exec > into an unfixed qemu-kvm fail for every VM with a console log. > > The first update from a build without this series still loses the log: > the old QEMU did not save the fd, so the new one warns and runs without > a log until the VM restarts. The VM itself keeps running. > > This supersedes qemu.vzs PR #7, which reopens the path and only warns > if that fails. > > Tested on hci-8.0: > - migrate-cpr-exec: the new cases fail without patch 2, only the > rollback case fails without the base cpr_claim_fds() body, all pass > with the series; test-char and migration-test mode/{transfer,exec} > pass > - virsh qemu-update of an Alma9 guest with a pty serial log in a > directory the qemu user cannot write, using the source build as > emulator: unfixed to unfixed reproduces the failure; unfixed to fixed > keeps the VM running without a log; fixed to fixed twice keeps the > same virtlogd pipe and console output keeps reaching console.log > > Changes in v2: > - 1/3: the cpr_claim_fds() comment in char.h says an override must call > the parent's hook first (Andrey) > - 3/3: new case for a source that did not save the log fd: the target > must not create the logfile path and must warn (Andrey) > - 3/3: _open_files() skips fds closed while /proc//fd is read > (Andrey) > - R-b on 1/3 and 2/3 > > Signed-off-by: Denis V. Lunev > Cc: Andrey Drobyshev > Cc: Maxim Nestratov > > Denis V. Lunev (3): > chardev: implement cpr_claim_fds() in the base class #VSTOR-148304 > chardev: preserve the logfile fd across cpr-exec #VSTOR-148304 > iotests/migrate-cpr-exec: cover chardevs with logfile= #VSTOR-148304 > > chardev/char-file.c | 3 + > chardev/char-pty.c | 3 + > chardev/char-socket.c | 3 + > chardev/char.c | 43 +++-- > include/chardev/char.h | 5 +- > include/migration/cpr.h | 1 + > tests/qemu-iotests/tests/migrate-cpr-exec | 154 ++++++++++++++++++ > tests/qemu-iotests/tests/migrate-cpr-exec.out | 4 +- > 8 files changed, 202 insertions(+), 14 deletions(-) > > > base-commit: f2f4b3de1a1be3360a77ca6ab79762466d238804