From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 637C38017D for ; Sat, 10 Oct 2026 12:43:36 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69ACgHqD021889; Sat, 10 Oct 2026 15:42:18 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69ACgHqD021889 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="cUWSlU/M" Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69ACgF7C021885 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Sat, 10 Oct 2026 15:42:16 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69ACgF7C021885 Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-88c4da716f4so816420b3a.3 for ; Sat, 10 Oct 2026 05:42:16 -0700 (PDT) X-Gm-Message-State: AFq9FYI346Ya9A4XmrVPGtio/m2FAAZ14vpoiuFAZ3b4kKC7/MUMzGHm evz03QreZ8cLtYvkHqhAt459gODQuloBKg1UVfZpwlwwqkXCoAmjddoybt82bLELt54FkMh4/L+ k3UagKlqiTfLhei8A9KrDVHn9f3ct+nQ13B1ce0T2C1Qsrhl/b0f9Jw== X-Gm-Gg: AYBFou0kRVvd4DafNf1kHrjkp6f3sT8hIynYqG6ZYLYWtvdWP+wRxZDh1zYRKcFnqUs 6relWlkCQXPpuUjg1KenvSwziB4MqJrX9z3Wx0SXfHp3fZaq0yFLrFRbJaYeYGyP/zDP1tqlFH2 ZcKaUU6J3BtVHDRI2WLd/3B761ExYJO38OIIfbJaaklOZSSIaAD12mpPiC18F3dzphLJnuD9c/U HF9czUMgCPSJLU3MImlGYuCdv76ODh6TTJLs+HhH9iPKfmtGLdEsajLnZRiis9zun4vEDkM+pBQ ckw/byJo6saSxDC1dYPFBT78IOlxDgl9VBHSrhIyboLGYlExnER1ct1PM0S6WCTketvCcDGhJ9l 7r5gEZVu2G489KHRthFpsyOPf8H1bcEeuHN66t/JznytrnULmWGAsN75GJQM7yUiVbENTms3Re3 7+MhoNnjpRxba708F2tHghxD+Zw8ddQ3Ct X-Received: by 2002:a05:6a00:3d14:b0:881:e626:74ae with SMTP id d2e1a72fcca58-897c7cd6d35mr3936813b3a.41.1791636134670; Sat, 10 Oct 2026 05:42:14 -0700 (PDT) X-Received: by 2002:a05:6a00:3d14:b0:881:e626:74ae with SMTP id d2e1a72fcca58-897c7cd6d35mr3936800b3a.41.1791636133986; Sat, 10 Oct 2026 05:42:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1791636133; cv=pass; d=google.com; s=arc-20260327; b=LJ+YVVL509feb5iptd+ReCEgWGhNsnPIDj6XJrUjeKDF91SqDvbiWV6QmHIe1W6MBC S8JTiu+ReduAUipnJbLt394NK2DoCd+MKF8PcfgEEqPI7EJwXCX8ujMbzSANzfQr4mD7 hdQjokCMh6y9nEUhGrgqKrC5QPQXlq7wb2KRxGfpIRuAXfCqPDrW9cRoB3RHSjhvHMYA 5lOIgFHOTavekXJuPA17yDj55lS+CTM4O6bHJS3qQViH04smVZ3JlIVPSSe7gxRNg3Ri sbLUAQmP3XEBtz+SIkV39GqKqCOcsf6g7svTDqrKW5ISU+o08e1V+RGYXAX4aewjuWqB R1sA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=mime-version:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:date :message-id:dkim-signature; bh=MxV5bFrWdMaHFOcEUAx5DGoavBR3I5JMlYnoklQ8IlY=; fh=a7O+alUt1cWQrLe5ChyqsVBdToUocbAn8sZxqBezD24=; b=m1jB35rrYdA6q12asBguRfQv3CPqHDVct237rLKbuxh8Q2yhPndmWcJRiiVNGiRvkD NiINcj5xl8fK7eoRakmHAJxxAq5Of1ET3p+ZuOwnV07OYuiqDe4YN5ZvTqFPPObtKV+H uWL3JfwVY5K2bi6ZXKxeZhgsO2q5HzOt2O1u3q9vsTjOZtSVWgUUJTesA49sqgVAWCtZ 5Uon0/sU8HU9xMd6gzC0uuLnVnbzE9+n0EvdrqxcT1oj38KFy4ylg/R5gFsh7FdvrZEO C71kqnwXYATs8TWLCR1ahg2xjZHCyL3wYCAgDjWWqvG1M3kb3U+WFvvcflvkfl/4ngm1 Yytg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="cUWSlU/M"; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 2a01:111:f403:c200::5 as permitted sender) smtp.mailfrom=alexander.ivanov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com. [2a01:111:f403:c200::5]) by mx.google.com with ESMTPS id d2e1a72fcca58-896c53525f6si9900696b3a.154.2026.10.10.05.42.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Oct 2026 05:42:13 -0700 (PDT) Received-SPF: pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 2a01:111:f403:c200::5 as permitted sender) client-ip=2a01:111:f403:c200::5; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="cUWSlU/M"; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 2a01:111:f403:c200::5 as permitted sender) smtp.mailfrom=alexander.ivanov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ECDkQpW/R59kvXOR6lE1ndJ/cwTMlDF1WDcIGtYZBsLaIF4qtmixyp79GPeKLRsqnKPzC6oO4YyESijdYkroJcLtNQBToNNlLjBtGkj44XfC5NRAB4BmmHgdg1z5zUpBt6KxQNg5gz+RCy2EsOMxGZH1duW4PrECPFI/QG9O24hgspYEmcB28MeDlHu86OxPDbn5jUOEGiw3kgrTXwQduCV/r2SV67PEAN9MAoIiFRNiPeSF5IOn9fPXJIeTyrWEDy5lWSB1kOUbnxCXq4oea2ilJEWA9ALrVq4Yd+6kYIflZ3pKb/iGkf3NVhpgOIa6vz0AAMvbV7y7LyqioGIisw== 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=MxV5bFrWdMaHFOcEUAx5DGoavBR3I5JMlYnoklQ8IlY=; b=QpixKHtR+P0SoYecF8YLMbGQUgrXL0jQ9QuqFrC6RhaFah1uXEz+kU16n8ngz/uKqxtqVTHbiLOgQ/uIuCSHKMeyzTQApETDdCBPBfWkKQVNdDJQP4f0dlwfVkNXFg9w0dof0r/eZGsoPxwI2I9nOPUcLla4V1sDS3FpHBlPmHEekzhXhWxjU1+/ykgZfXig1Q+rwiZGi6SCQePz2gdGTtwcV9iW9qztSqSE4UtC1AH67ov11lm9DA2xsOKdzmmz2aNenG50wKpd8MoiRF40olKt/J2cBZyGBjfz5gOrBFDwLB8QVqrmslYwfiUYF1jQENbOBabgmf7TeHkesTx06A== 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=MxV5bFrWdMaHFOcEUAx5DGoavBR3I5JMlYnoklQ8IlY=; b=cUWSlU/MVgXFATs5HykDWGWOLrROc3uJatpkgmznQsZ3jc8o1wa1kLDmp7cfEatnEsOabYq3vGsu6B8BpMgGmXbxfq3SRiChXzHC8l7nDQQSxvZDaH69Vj0R16ETA1St+F9wBQ2tJTkdXLfrAFk4JkeSBY3mUR4WGPzQfedCzdWYnwto1YKDKTPiKHz7ey1BiZm8MXmsN7PPdgwdMDt23N71uW/40L5WRJ8KICwIEL++N7ilLf0lWvbchJn+IC2C4IPVfMv4Lh0kadDR2tv5uWrAIsSFJwnQgPsIzoPTp7S3JBckqcVG+L3y4L37o8O0K0qGcJiPfs7NX9oO32aVJg== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10743.eurprd08.prod.outlook.com (2603:10a6:800:205::19) by VI0PR08MB10653.eurprd08.prod.outlook.com (2603:10a6:800:20c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.522.6; Sat, 10 Oct 2026 12:42:10 +0000 Received: from VI0PR08MB10743.eurprd08.prod.outlook.com ([fe80::7a7c:d078:f125:f16a]) by VI0PR08MB10743.eurprd08.prod.outlook.com ([fe80::7a7c:d078:f125:f16a%6]) with mapi id 15.21.0522.002; Sat, 10 Oct 2026 12:42:09 +0000 Message-ID: <603a9c8e-a197-4170-9245-79ef6f78e880@virtuozzo.com> Date: Sat, 10 Oct 2026 14:42:08 +0200 User-Agent: Mozilla Thunderbird To: no-reply@sashiko.virtuozzo.com, den@openvz.org References: <20261008170200.646208-1-alexander.ivanov@virtuozzo.com> <20261008170200.646208-4-alexander.ivanov@virtuozzo.com> <010701a11c7d299e-062fbe7e-2eb8-4bad-984a-cb4c62e6ea8f-000000@eu-central-1.amazonses.com> Content-Language: en-US From: Alexander Ivanov In-Reply-To: <010701a11c7d299e-062fbe7e-2eb8-4bad-984a-cb4c62e6ea8f-000000@eu-central-1.amazonses.com> X-ClientProxiedBy: FR4P281CA0169.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b7::15) To VI0PR08MB10743.eurprd08.prod.outlook.com (2603:10a6:800:205::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10743:EE_|VI0PR08MB10653:EE_ X-MS-Office365-Filtering-Correlation-Id: 1bc9ba71-a398-41f4-788d-08df26cbe656 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|23010399003|366016|1800799024|10067099003|22082099003|18002099003|4143699003|56012099006|261009223027099003|5023799004; X-Microsoft-Antispam-Message-Info: dho53BAX2miQ1xjttmb/luwl2r5/ashcGFKiddJw4FG1zhqJ7IXXPTTiEXPYFsod2bc6ZQk+CftnTXLqwCN71u7E4pT+MCIdFvAGthuPfTknq44GkDodxqWN23Q/qscNv131sIr40+gkjIul5cLUvNNaY1KWp7qGA/wGwWPilRA9pXfArZVviBiWNkyfYD3CDX6VFqlX/eSXY1MHpoo17P9JVowCXjm9Dnl7paOWTfhTpIds5CxyxlVz5sK0zSHN9GxXEhlgDWUHH7d6ljBGkxI7zIgKeRwYL536Rbny149eSHgTqqepyT3XRwwgCosPnTFUlgsBONOJYkOphk3BKMm4E0a3Mr8pSeWRBe7HZ287/RO/kJY/RaSBOt0/qqLV0LZtSVVF88f2M0LiWWDckQn3biRJMmWzVZCJ0PFIgJiRoEA7cQzZtRfFaF5szhuyFmYVntAvzMeYNLNJ+95q9l4ZVLcjvpt3zK2IZup2zGvjTX1GxLA7a9eYB0bR17zxZrSuT8M7dsoC0ApTb9ayin8iUROB+2p4RO5Ql/uXurDVSk+5i1nvXrsWNkBZ/i6LhBP4j0KH+V95aZn1GCqKneLzgweb4FsxA/ga7Smu+Q5ZbIj5q/173SXQqm2UeWnRB49hplg4JarHqvft7u2MyMfa2SSfic8qw3gDdHcN7E4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10743.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(10067099003)(22082099003)(18002099003)(4143699003)(56012099006)(261009223027099003)(5023799004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?STZBY1VZL2NJSGlaZjF4QWowcW9pZUpaMHFkZmVieDVKWkhjTDBiUmVydDg2?= =?utf-8?B?RWRucjFqNkpNM3F5OXVoTmVKZDdjU280UjZjOHgwemNJSVZkTWl4aVR2VGpu?= =?utf-8?B?SXR1YlgzZzFnWC94dExnbzdzeHNka3RTeFV6b0hTSW1OdFpaTHFxS2dkSGtX?= =?utf-8?B?Yk9GdkhoZ2tFZXNlc3djc3E3WktxYzhCaERFUk5HY0xIQStLdGhPZXhIVnlo?= =?utf-8?B?S1RiUXNjT0pvZHlEYWhNaVNjVzRJM0dWVlpNcTc5WGUrcWo3ejJhVjZpTlpX?= =?utf-8?B?amtUR2dyMGZ1UE1qZHJ0eXdnTEpwMUtMZ0VmdWZPM2RnNmlRNGpFemdydGZx?= =?utf-8?B?ckVRYkZSc1BEak1ZaXZPU0RQREhpQlpoYzkzT1B0TTI4NHM3Q1FtbnRxSHZJ?= =?utf-8?B?SkJGTit0OXlRZGRyNjJkL281TnZlQVV0dUVGbTlyTGFuRlF4dHRkekhURUlF?= =?utf-8?B?ODAydFlyRzFpSVl4MzhxSWFzTG4rbGgwL1ViVEsxZmZPeElwZUUxcktKMVlN?= =?utf-8?B?REhKK1M4R2JGeCtkOVplZkZOcUp2UWVuejFzUXdyN1M5WDI0NVZFMGE2MHJX?= =?utf-8?B?M0NUdk9hbTJldTRRemRML3FGTGMxQWNwOEptS1lkQURJTDgraXNmRm5DNDVz?= =?utf-8?B?QTNrWTdlWlFkbjE2M0piT0RRY1BJL0VjVDFJbzVUdTJ5UlpZenhQL3lNbW5h?= =?utf-8?B?TkVwUUhIRXIzWWRjZFVaOXk5WVRzUlczVmJBL1FpY05kQ05HNzNhUjhQNzJC?= =?utf-8?B?N3ZTVVh2YVk2eHE2ZUgzUUVVYllDdVJmbmZIQVZHQjdvWkhSYmxicnJSNkZO?= =?utf-8?B?M2grSU82aDE2V0tMd3Vic1B6S1d5dFV4K2p2RUhidENDb1QrSlZvZU0vWmdJ?= =?utf-8?B?T3Q3UGdxSjhHUEpXVlRSUEoxK0RaZFVzSkwrTFNvWXNGODV6RW45TGZPYjh3?= =?utf-8?B?dlAxMGpJb3MxNEtVQzU5WkpGaDVyYitGQ3pVYlVOTysxODc5bjNEZTJNNWFP?= =?utf-8?B?Z05kS3hQVEdtSk9KSDl2eGZyRmhzT1hiczhtbkZ3T1BhUFJBbmZoUDgwWkw1?= =?utf-8?B?UGlSRHlGTVl6UHdZOXpTOVZXS01FcElQSGdJMzNZWCtGcWYzVktFMG95eVN1?= =?utf-8?B?SlV2OGMvaWpXNi8rcXltWFZuVnpJRG8yTGdxMU1vN2Q2Sk01ZWtIdHFWL3I5?= =?utf-8?B?UEFTcFIrQW1aeFptaTNtdm4zUXprZnd3cGhwMjh0dG1WelhoaUl1bkpTTTZm?= =?utf-8?B?WUdFZVBnL3RZaEliMzFPZmVTZ25iTjJPY2psMlNUTzlPWDhEWE9odTBydlps?= =?utf-8?B?U2toNzRVcTAxd2Z3QWtZVzJYMlphS3dxOWRFazFLWnliV3RlcUo0TUJIYXR3?= =?utf-8?B?dldNNDRuSXoxaFRVbG1SRklQdnEzbW5pS1RaOFZIQitvMHFVTEk3dUdKTTVB?= =?utf-8?B?ZW05OHRlblM1cVV5WjhZR21WeW0vaml6Q3MxUVkwbmpFOFUvbUx0TW0xcGNV?= =?utf-8?B?VEdreVZITzBMaE1NRFNldDZJOE45QTBnbkdqQXc5MkNoREZxa0pYNmFLSXdz?= =?utf-8?B?V0FkKzZrbC8zZHlkeUZEMnZSVFoySThGU2dHWlJXdm1HbDBuaDc1L0FnK2lQ?= =?utf-8?B?c2hRbnhuZWRDSEVnZHlHaW1UZ3pZajU5L1lIcE9IWDJ2QzdQVlJQVFlxUjlZ?= =?utf-8?B?UHFkUXNhK1pMUmF4aTRBR0RsWHduYWI3YnZGYzNjN1E2V2tDRWdxMHBJODY1?= =?utf-8?B?dDVaVE51bVMzMzQzN0FQTnhLVUkzaTBxZlJ5UkhyR2xremVoc25yNGJNTG1q?= =?utf-8?B?OVRwTkxxakVuVlVySEErdS9KMEJXR3pBQkpyNG9NUEgweXNNUzdhbENIemhJ?= =?utf-8?B?ZlpzcUdGa1crUGE4Z29SUjdFcFJ4VjRDY3pneGJjMWZ5WlB6ZlF4bDJzUkdU?= =?utf-8?B?dG1QVnJBbWlXTUIxR3REUFNkZ3FYTjNkTVNGdG9QMGxzQi9INUlpRWhNd2V3?= =?utf-8?B?cUZlV3hUMmNHeHZWSDkwYXJteEJ5NmRNU3cyc05rRTVCSnpaVkhoVVI1cXlX?= =?utf-8?B?ekt5aEZrUTR1Y3hpTG9RNTJFRHBBS09uRFFxMXRKTUpySWdISkJMdEhTSUc1?= =?utf-8?B?SWdTUkhQcVRJb3dvL2dYaEtNQitFOVRtNEhzMEQ4UEZIYklKUWdDUWEycHBG?= =?utf-8?B?ekU1VXBDcDdjdFkzSHMzdE50Rkhab29IVndJMk1xd2Myck1OZzhoY0FIRDdU?= =?utf-8?B?bmF3aEI1K1lVOXUwMXByVlMxZ1l0dXg1WFhNM05YblBLdVZoUHo3RzlOMC9y?= =?utf-8?B?RHdZd3lFY1lsNElqTVBQQlpGbHBtQ0JYbklpZS85VFgzOGJuSzhiQ1hDOWVp?= =?utf-8?Q?gSs0CyNI94+crcbc=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1bc9ba71-a398-41f4-788d-08df26cbe656 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10743.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2026 12:42:09.7532 (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: 5sHrm+7tMfRricVB2nMm1tp8eQqIxhzX/peG/RM8CdrQzS6Ypwv0QWiS79T/zMVpGIr4gXM+ggpO3EdJREHqQfFgC8jytWGAG6cAx+m9j3g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10653 X-OZ-Fwd: true Cc: devel@openvz.org Subject: Re: [Devel] [PATCH hci-8.1 v4 3/3] dm-qcow2: truncate unused tail of image on suspend X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org On 10/8/26 19:08, no-reply@sashiko.virtuozzo.com wrote: > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [Medium] dm-qcow2: truncate_preallocations() trusts unvalidated on-disk refcounts as file length > -- > > commit e3b5d03194a42ef95bbb361e199ba3c183aed97e > Author: Alexander Ivanov > > dm-qcow2: truncate unused tail of image on suspend > > This patch adds qcow2_calc_used_end(), which scans the refcount blocks backward and returns the end of the last cluster with a non-zero refcount. qcow2_truncate_preallocations() now truncates the image file to that value on postsuspend. If the scan fails, or md writeback failed, it falls back to the old behaviour. > > Link: https://virtuozzo.atlassian.net/browse/VSTOR-148171 > >> diff --git a/drivers/md/dm-qcow2-map.c b/drivers/md/dm-qcow2-map.c >> --- a/drivers/md/dm-qcow2-map.c >> +++ b/drivers/md/dm-qcow2-map.c > [ ... ] > >> +loff_t qcow2_calc_used_end(struct qcow2 *qcow2) >> +{ > [ ... ] > >> + for (i = r2.index_in_page; i >= 0; i--, pos -= clu_size) { >> + /* Last cluster is partial if size isn't cluster-aligned */ >> + if (get_r2_entry(qcow2, r2.md, i)) >> + return min_t(loff_t, pos + clu_size, >> + qcow2->file_preallocated_area_start); >> + } >> + } >> + >> + return -EIO; >> +} > [Severity: Medium] > The used end here comes only from the on-disk refcounts. Can it be wrong when those refcounts are stale or corrupt? > > An image written by QEMU with lazy refcounts, or one left dirty after a crash, can legitimately have zero refcounts for clusters that are still in use. A corrupt or crafted image can too. > > In that case qcow2_calc_used_end() returns an end below clusters that are still referenced. Nothing cross-checks the result against the L1/L2 tables, the snapshot extents, or the header and refcount table/refblock offsets. > > Before this patch the truncate went only down to file_preallocated_area_start. That value is set to file_size at load and is only raised by this driver's own preallocation, so the old code never cut off referenced data. > >> diff --git a/drivers/md/dm-qcow2-target.c b/drivers/md/dm-qcow2-target.c >> --- a/drivers/md/dm-qcow2-target.c >> +++ b/drivers/md/dm-qcow2-target.c > [ ... ] > >> + /* Refcounts on disk are stale after failed md writeback */ >> + if (!tgt->md_writeback_error) { >> + used_end = qcow2_calc_used_end(qcow2); >> + if (used_end < 0) >> + QC_ERR(ti, "Can't find used end: %pe", ERR_PTR(used_end)); >> + else >> + end = used_end; >> + } >> + >> if (end == qcow2->file_size) >> return; >> >> ret = qcow2_truncate_safe(qcow2->file, end); > [Severity: Medium] > In qcow2_truncate_preallocations(), the value from qcow2_calc_used_end() is passed straight to qcow2_truncate_safe() as the new file length. The fallback only covers scan errors (-EIO and similar). It does not cover refcounts that are consistent to parse but logically wrong. > > The md_writeback_error check only covers this driver's own writeback failures. It does not cover refcounts that were already stale when the image was loaded. > > Is there a way to validate the result before truncating? For example, the shrink could be skipped when the dirty or lazy-refcount flag is set, or the used end could be checked against the L1/L2 and metadata extents. > > This ties into qcow2_check_convert_hdr(), where the dirty-bit check is commented out: > > // if (!is_ro && kernel_sets_dirty_bit != > // !(hdr->incompatible_features & INCOMPATIBLE_FEATURES_DIRTY_BIT)) > // return kernel_sets_dirty_bit ? -EUCLEAN : -ENOLCK; > > With that check disabled, images with stale refcounts are accepted at load time. I also don't see any other refcount consistency validation at load. Before we return the image to the kernel we do "qemu-img check -r" and the refcounts must be consistent. _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel