From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id A6E7F80E7E for ; Mon, 9 Nov 2026 14:48:51 +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 6A9ElTFG000568; Mon, 9 Nov 2026 17:47:30 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A9ElTFG000568 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="aBFjohch" Received: from mail-yx1-f70.google.com (mail-yx1-f70.google.com [74.125.224.70]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A9ElR4d000563 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Mon, 9 Nov 2026 17:47:28 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A9ElR4d000563 Received: by mail-yx1-f70.google.com with SMTP id 956f58d0204a3-679f81d5d7bso1698921d50.2 for ; Mon, 09 Nov 2026 06:47:28 -0800 (PST) X-Gm-Message-State: APuU4Z9ALFYV0C2ReB8Myze0qKr6X36s8TJ6a6lRVGG/BynI5Yt1BnsB KCp0U88ovs+Bf6PH6HCDnCjfNgeuaYC/4Sc4SpcQSnOaxOBJcimoCUoY2WJ5cod0tWN8nKrlSTb 2ANH+lls7DDP/Er29eNSOGY5Jovob1z3viqW6zFSc8VfFqCV95DPzZQ== X-Gm-Gg: AYBFou0bgBdG9PwymJQ4/Djyi9DV0W4JIgllYD76btb6TP51eqca81JWXE8BB4PUfMJ 5I7u5/23jlc8BZzMbLu/qE6tClpX1EOpf9OgE8tuQebsJL8h4Y4RSBUhUnMUX5cTEEWAnp8qWMg vSlyu2/IK02bECLv8EkI3WaXLMtKmaNCoktJcFU2MVTirFr7td6UHVua+9q3M8hkhfiQJ9ebAul pjP1+zZBhJVCVX6cgdslTbkbjW6RdBL0DggcwFRBM17pdSpxZAanfQg07Ul+ii7foa95zW5puy/ ytLr6iKozgqP4MkOYQoye4NZpOJu1c9D6KhrVqQ00QFhEBe65/CB6MFcA6ulXqmH05kFqrqFczf TO41tsMU8XaBCgw0PkZP3Ur/xMW0k2/sZn7DVes8TArF8ZA2Azfm5LXE2ZB7Mkb84B4Jdm6Ni2J yMy7UAgnCJ7kllahmUfw1KYKij2bV2cHwMMxQ= X-Received: by 2002:a05:690e:80a:20b0:66e:5d40:6dab with SMTP id 956f58d0204a3-67c3d97b7e8mr1340216d50.23.1794235646993; Mon, 09 Nov 2026 06:47:26 -0800 (PST) X-Received: by 2002:a05:690e:80a:20b0:66e:5d40:6dab with SMTP id 956f58d0204a3-67c3d97b7e8mr1340206d50.23.1794235646496; Mon, 09 Nov 2026 06:47:26 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1794235646; cv=pass; d=google.com; s=arc-20260327; b=IwGXtZ5CyFuRG5AGfO9v1GHbldf+IMAY0/Ojvf71wFkMujc0K0I7pV7JM+5maa3Dbq 0AEe5e2Y9AkECCr4GAEAE47g4IsfByTv2zLyq/Ih0WGAX/LFAnIlmi01mDKIK008eAKy HtuRmoNBlrxyC2ASPcxgSNgd2KTt9VG0LI9JihFDW+WvA68yUhrk1CWzie5G+rNp+tZL OeyfD+QDO9J/0+h7ImUzhe5A5yemiHLjiAAJilQnGyVMP4L8oUnFEIJ+6pf7XQQ0X7Vo 9Sz9ZFSEEqPAIdNjY/OTP7XRmqyNDnRjIXIssuGkAgNxGPAVo3LR0bbGv5pJ/Y4KGCLD 4TGA== 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=CA0Ds9Tlr/w4r4oKvQzBNJ3sRmUjFffVi06bYMmIaIY=; fh=IlzoM7xapMIT9vjIu8V1YxnmOSGAT8hvLuDm+hjUGIo=; b=GsFvVYPHAeQTHqiBNjdq8PCeCRwmNTQOJs+fteRmne2OgI0DJFUzsZCcZw887Iyjve UVgIUu2kztyQeQiaL8x8bhyon6jVFpZuaFh0Ez5K7XdrYIRsRK7/EG5SNT0jNzNxRpsY Sqn8RBslG8TcWRVlPNIu/hlX2Hfiv/2Nlc9v9IfT89Fyhel+4Pyf2XMNKAEb8fNpKg7E gIzg/cl6jTSZZV9Syzw1Ent1pzI0WuM3NPIv9wpXJOo5Jm26T9j3M8qVjUIP2pQd55D5 1Ol6rTygMpRfh33OU3hVl1wZNSlB7cjRHzjWL9pyoyZkUVuy99kUZdJxOWbFc3v0j5lU 1PAw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=aBFjohch; 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::1 as permitted sender) smtp.mailfrom=alexander.ivanov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com. [2a01:111:f403:c200::1]) by mx.google.com with ESMTPS id 956f58d0204a3-67c3b932043si3387635d50.54.2026.11.09.06.47.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2026 06:47:26 -0800 (PST) Received-SPF: pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 2a01:111:f403:c200::1 as permitted sender) client-ip=2a01:111:f403:c200::1; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=aBFjohch; 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::1 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=lavqQn3O0Brhl2BvUZX+biiHyjCX0uX1TwLCqXBP8VdVRDEzrcIvGdDIxkIcNNdx5SyBSvWa4uVEbxbfMzMDYlXRIyEgeuOToyM7bgChHG8UISW3tmqr8tW24AQzIHJWdJWz8HgqkAy7SxkalBkKASOzT48bay46k/1KUAGo5lunRnrl0acKb768zZyx1Xg0QaGv6GMurs7APpfplz9NTsR1kmMu7R6tbFPnGBX5j7EqCzP4uRwUkeHyCFMNpmKb7WffR/AdgZnYsgHhPA8tXccsVy59UmT+RPP8gaGes8SQvfrwY5O9PztNsLZV/SeCI3c3XxWY2+y6RZf4cDxdSA== 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=CA0Ds9Tlr/w4r4oKvQzBNJ3sRmUjFffVi06bYMmIaIY=; b=YSsnu/31hfHgfe0nQrBL26Y5iuiTN8cA+je0tX8fwrbYUuHAOUUYDAfGMR9dYSO/qnbAMiRM4fxk3q8+LLT7A776wmpRH4FcVT/1uVriWG0hz+j6cx9XgPfJN2fOqzibqMtv8MY+BgMDvxr/eZ8MAqlkNkgwUDUvrGw/ylu2H6wDuFjmCTylagxwGl1+P5XEuE//wtG7HqSuAEi/thka0z8yQjfR31MrnTqKAQnTOt1wmo47fa7LMLnKGfS1u2JWBIMMCAWYpPhX5e3vjJ20WF1yE50GNeSYHo/PsrPaT48qs6Ql6ecI7T7QJ79SYzw7sjl+obfqf5p0aUrAdn6uZA== 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=CA0Ds9Tlr/w4r4oKvQzBNJ3sRmUjFffVi06bYMmIaIY=; b=aBFjohchPwSYvi51o0iEia/uu5xCudPUlgyxCEG2LRxhiI3Qfulz4C7UR167nlH0TZeXOSFuFXaeDwdg75QjqAXXCzJW+Du+bBFH1ASd+N7gm4ELaH3GB2jE10QzFOEYRFwWiU+GeZw9Iw6hPYzVKFriP/TQ7qLNl3xfcCGwPQDJNeYhlpgMtktoDfqFcl5g+OeP3MCE3LXlWHqZ+PXkKYM8EmBiK+CaHjHL7NQqeB4VfRXL19UYUgsBlu61SMeG/UAvFTueGc9DePY6kISbx1WPu6WGLSri3I0GTOcUbvgIbt+6cqCKJT3xYx3JvEUeORhmBahdttiAhPWZROCYOw== 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 AMDPR08MB11433.eurprd08.prod.outlook.com (2603:10a6:20b:718::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov 2026 14:47:23 +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.0592.009; Mon, 9 Nov 2026 14:47:23 +0000 Message-ID: Date: Mon, 9 Nov 2026 15:47:22 +0100 User-Agent: Mozilla Thunderbird To: no-reply@sashiko.virtuozzo.com, andrey.zhadchenko@virtuozzo.com References: <20261109140143.1408038-1-alexander.ivanov@virtuozzo.com> <20261109140143.1408038-11-alexander.ivanov@virtuozzo.com> <010701a1c0ac58d9-774c6712-76a3-4839-b795-01687be81303-000000@eu-central-1.amazonses.com> Content-Language: en-US From: Alexander Ivanov In-Reply-To: <010701a1c0ac58d9-774c6712-76a3-4839-b795-01687be81303-000000@eu-central-1.amazonses.com> X-ClientProxiedBy: ZRAP278CA0015.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::25) To VI0PR08MB10743.eurprd08.prod.outlook.com (2603:10a6:800:205::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10743:EE_|AMDPR08MB11433:EE_ X-MS-Office365-Filtering-Correlation-Id: db571d39-cfb7-43dd-a045-08df3e705d52 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|23010399003|376014|18002099003|22082099003|10067099003|5023799004|261028144727099003|261102123227099003|261022115727099003|261022075727099003|261022105027099003|261021121427099003|56012099006|261026140227099003|261009223027099003|4143699003; X-Microsoft-Antispam-Message-Info: dM53bPc1P7OVl634Xd1nQYzLpuO9dqtBoto62uai07eGWyrQAr7M2UtIw2OwzgXL0LM5DRQIZc3alf9upn6QhGylGpNVdnjdQkMfHyizo2CHAns7ydUBTtGcBQuE94KNJYSnxdUJQBXi7u6VG5+OICADYKYuLNUtfSo8Nd+DYlaiHsbtmRd4sBX2TJaCB6hXboa+j8sdGWkquufoawyPsk2VPmnn3c9CfGsQNJyUety9LrA9/wloQLISd812jCIRBdNrAQqq85G7VnglKgeN79mTH+vS2SUv5qDsA2JBWJMMOh/i3Pgrm2Atm93KxOZrZfU4LVZ95i/rHopfb3ud9BXRBB2A4HUCBSsb51eJv5du9N9jto2Q+SV/zfYozsQSokZgX5PaEyeDdxQmnX+u2ZXXgr64ZIXSzn1kChSc0CzNCBBttU1fl8IIESN4qWR7dXGwH7Kea9ks5O6pRp4Rd/CFwUDQNtpqoFEQ1KR3Ovxth9BHJt1KO93vxL+W1X4QF49g7EtVFNTfKBhiA1lteAohm57AjsLtJuVaeLDpraE1DSQUVtBI4Nl/y7ZKkflxaE1IEyG1N8/UEC3sKw3Ye+Iw+tYGS4j9r7YpEtkd16jzkdSY4N7qPrCdRL8i+TMx1ta3L10Mh13uZl0Jto4QNWy00JeaNVR3Y76kTeeq96o= 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)(366016)(1800799024)(23010399003)(376014)(18002099003)(22082099003)(10067099003)(5023799004)(261028144727099003)(261102123227099003)(261022115727099003)(261022075727099003)(261022105027099003)(261021121427099003)(56012099006)(261026140227099003)(261009223027099003)(4143699003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?em80NTRpK280Sm1wWlp6OW04YlFNZHZ0Z21Uckl4UEE5KzV4bFpUa3RiUVlt?= =?utf-8?B?K21ycHJrNWZkN3hVVHpsNUFNV2tQS0xhNGl1cHk3N05mUVJ1RklobFY1NU1Y?= =?utf-8?B?b3BKSS80amVCVnhkRHIzOVROckVUNnhleHVVK2VEUlUvTHlMeDkySkxPdjJN?= =?utf-8?B?M1lLWGJLQkdmTFZzRlhCcnlYNDNLR3M5aHkxYk10VVh5T3lTTGdDYVRHamhY?= =?utf-8?B?bW5xNElXZHJwQ3kwS3p0dUl2cG5NaFBRM1VHU0ZpUUdiVDdaMDVSSExGeGpl?= =?utf-8?B?L2ZvUE9oVWRGT1hWUUM4d3VLcTVESjU1THc3c1lKdXE0VisvWExEKzdWZ1Vl?= =?utf-8?B?a3RIODhUSUM1THZQMGMyQmNNOCtoWXRPL21odnFxclc3cHBDc3BtSWJsQ1ov?= =?utf-8?B?ZkdOc0RvdlpWNlhEVmY1dVpTUFJWdHZRRjByblYwVklIYTA1Z1cyWi80aXVG?= =?utf-8?B?aGVyK0k0dWo2YWZINXFjaTlMRThBT1I2STdkOGNLNURvQW1ZUUpPLzBobWNs?= =?utf-8?B?eXIzKy9wRkNIS2FsMTk0Y2QxeXczbzIwV1F1NFRGUVNENmFWdUlHUGtvRmZW?= =?utf-8?B?OFRZSEJUUEhNZVlSN1ExMTdmNW1zOXNONnZTZ21RRXpaLzMybzRUQ3NCbURU?= =?utf-8?B?b2VXM21JODVnSjZQMWRHQW8wQU9RTkhoUDY3UEdoZ3FValdpazBJS0tNVlZ4?= =?utf-8?B?ZDVHeGgyb0tOZzhYR0RRWm1sbVdRVWxoK1FOQWJlMkJ5MkIwVUpBUndtV2Jy?= =?utf-8?B?S3MrTXFyam5IWC9ENGVkcVN6WlVvRDdvbHhKY3BhVDd6alJ0am1NQUtWcCtC?= =?utf-8?B?dHlGWGRsYy8vdzRzOWh0ekJxSEl5NUpFQnZwYTJnTGlQaFk0STRhdWZ5ZXp2?= =?utf-8?B?YW05SXpTK2xvMlk2MWU2dllRRUdES0VlYzVNbURVM05RY1VZM0RYRFNFZTQ2?= =?utf-8?B?VG11Kzhya3dlREJpWk14TXRQeWZJOXZIRCtRWGkyWU9kcG1aRWttMWtldTJa?= =?utf-8?B?N1ZWRkxabkthVWhpUFhzWGpScmtmWG9ldHZPcWVPaUIxR1dpbDJ2SlYyYzE3?= =?utf-8?B?RHVpTWRFMnNRbnQ3ZmNCM0YyK2E4RU0vZmRhMTlqR04ybm5DYXFNMGFmNDJa?= =?utf-8?B?dERzaW9Ia243R1NlekpTaGRnWXNVRndHQm1qLzJDVzQwVFRTUVhxYll4bXZM?= =?utf-8?B?YktRcU05ZG9aWmdLQnN3dEpTWEJKeUowcjdCZU1MRkFVUGxJVWhBUVdYTTh3?= =?utf-8?B?akV4UE53MDdiMjNRQ0RpeDBVTHFGODFQdmFDSGlqMHI5OGFCNVEybHdsQjFN?= =?utf-8?B?c1RvSXdKVW01SVA1Qm9wSjB3MkJEdGFuQ1VjT3g3RWEzUGRyRlZjK1JOQktX?= =?utf-8?B?UG5CRkRmL0Z0VEtMbkJLS2FCUmlsNlBJMzFROHN0Uk13S1NYdjVidWR0VzlC?= =?utf-8?B?L3l2aDBTRm9rczhoczFGMS9rWjAxdDd2SldxQWJDem5kWmRGUVdPZXNhTFFy?= =?utf-8?B?TjlIaUdpaEtqcDBvbTRGeklndDl4UVNtempnMEJHTmdBMWluRS9EL2YreUJE?= =?utf-8?B?OFBUSGVndUlIaXBEdGt4bHpBd3pCL0dkYjNZb1EwS0lzZEdHaDdCeERBckJO?= =?utf-8?B?OEJRK1NKZ1p4MkRlci95TWNMMVEwTnpobGNTcHBRQVBDNk84Zlh2UXhGZHdT?= =?utf-8?B?TFVIRC9oTk14WGg4L2VVanVvK2ttL1FMcEtNdWVSQ3RuRHgyTkxQVEdOTjJX?= =?utf-8?B?TE1HL0d2b2VUWmhFRDVqZGRHcnZxRmh4aVVuUkVxSlMvNnZzMEl6dkt3MG1y?= =?utf-8?B?emVIQXJxT1VyTkVQRm9zUVRtZmhGSkdjbE5rckQrNU5oY3lPSWhtOHpPWUhr?= =?utf-8?B?SXlpMUt4MzVBc1ZnRDVEbTQyRXBYeDdGWTdXOFpaUzBIeFdMSlZMRUVWbERa?= =?utf-8?B?cFZPLzQzZkNSUERFYjhodGZKaGpoa0oySHpsUFBaVDl0OGlKS1JFeUltcmpp?= =?utf-8?B?bTZPZmZvd0RtcXduY2Zkb3hUMjJXbVg5VzJyQ2d5WEp4Y1FpRTU3NkUreVVP?= =?utf-8?B?cDMwbUI2NnVSMzR1ZHYwQWlwNjdKSWZ6OU94Z1hZUFZ0NHN5YkFUWHJrdmgv?= =?utf-8?B?ZzAydVBOWmc1WldQeTlkQjJpNE5POFpiWVFzazhFbjlmcjR4dm1MWVRhbHBL?= =?utf-8?B?ZEx6RmpuT1FyNWZsTDdraDNyMHF4Nndla2JyT3FUWUY3dG0vSnU3WUZEWXZE?= =?utf-8?B?MnNmOGtHcnJSb0xpVFoyMEVQYWlMdVBUV3lMYUJOa0ptanJkZFd2MVl5Tkdw?= =?utf-8?B?REFKSWc4WlVrRVlZY3hWQVl1aktWTmMzQ1kreHFldkluU2hwZEtBQkpOMEww?= =?utf-8?Q?y3JnfpSG9euE3fe8=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: db571d39-cfb7-43dd-a045-08df3e705d52 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10743.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 14:47:23.5697 (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: YFycegLqvk/VAsbuMYpWSEuVfsH9sE7Tt6Sq3O+CPIoJGjhnvOg6Net2x8NYsrcKp7ldYqZgUlD7XImTQd+wKAcZXa/ziKbU523mqdNnKHA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMDPR08MB11433 X-OZ-Fwd: true Cc: devel@openvz.org Subject: Re: [Devel] [PATCH hci-8.1 v11 10/10] 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 >> + ret = qcow2_md_page_read_sync(qcow2, r2.page_id, &r2.md); >> + if (ret) >> + return ret; >> + >> + for (i = r2.index_in_page; i >= 0; i--, pos -= clu_size) { >> + if (get_r2_entry(qcow2, r2.md, i)) >> + return min_t(loff_t, pos + clu_size, >> + qcow2->file_preallocated_area_start); >> + } > [Severity: Medium] > Can this scan allocate memory in a way that deadlocks under reclaim? qcow2_calc_used_end() is called from the postsuspend hook: > > qcow2_postsuspend() > qcow2_truncate_unused_tail() > qcow2_calc_used_end() > qcow2_md_page_read_sync() > qcow2_alloc_and_insert_md_page() > kmalloc(sizeof(**md), GFP_KERNEL) > alloc_page(GFP_KERNEL) > > Every R1 or R2 page that is not already in the md cache is read this way, and then read from the image file. Neither the dm core nor the driver sets a memalloc_noio or memalloc_nofs scope around postsuspend. > > Direct reclaim from these GFP_KERNEL allocations could issue writeback to a filesystem or swap on this same suspended device, or on a device stacked on it. That I/O cannot complete until resume, and resume waits for postsuspend. > > Before this patch, postsuspend only used the already cached page 0 through qcow2_set_image_file_features(). The other allocations in the I/O and metadata paths use GFP_NOIO or run under PF_MEMALLOC_NOIO. > > Should the scan run under a memalloc_noio_save()/memalloc_noio_restore() scope, or use GFP_NOIO allocations? Fixed. >> + if (tgt->md_writeback_error) { >> + QC_INFO(ti, "Skip shrinking to used end after md writeback error"); >> + } else if (kernel_sets_dirty_bit && qcow2->opened_dirty) { >> + QC_INFO(ti, "Skip shrinking to used end of dirty image"); >> + } else { >> + used_end = qcow2_calc_used_end(qcow2); > [Severity: Medium] > Can this truncation cut off live guest data? The used end is derived from refcounts alone, with no cross-check against L2. If a cluster has refcount zero but is still referenced by L2, the cut point moves below live data and qcow2_truncate_safe() discards it permanently. > > The commit message says refcounts may be below real usage after a crash, since both QEMU with lazy_refcounts and this driver write L2 before refcounts. The only guards here are md_writeback_error and kernel_sets_dirty_bit && opened_dirty. > > A v2 image has no dirty bit. qcow2_check_convert_hdr() returns early for version 2, so opened_dirty stays false. > > In the default mode kernel_sets_dirty_bit is false, so the opened_dirty guard is skipped. > > The ctr-time check in qcow2_check_convert_hdr() is commented out: > > // if (!is_ro && kernel_sets_dirty_bit != > // !(hdr->incompatible_features & INCOMPATIBLE_FEATURES_DIRTY_BIT)) > // return kernel_sets_dirty_bit ? -EUCLEAN : -ENOLCK; > > qcow2_wants_check() covers only md_writeback_error and truncate_error, which are errors from the current session. Nothing in the driver detects an on-disk inconsistency left by an earlier crash. > > The commit message says the scan is safe "only because userspace checks the image before an RW open". Can the driver verify that assumption? > > Would it be possible to refuse the truncation when the cut range is still referenced by L2, or to make the shrink opt-in? As I wrtote, the driver already relies on refcounts being consistent: find_unused_cluster() reuses any cluster with zero refcount, so an image with refcounts below L2 usage gets live data overwritten by the first allocation that reaches it, with or without this patch. _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel