From nobody Tue May 7 17:05:44 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1685373372; cv=pass; d=zohomail.com; s=zohoarc; b=Pvj6yXfLmsrfakBDUp818LVsxPLyDw15LZSymU4CShoIdXBSrhk8rZgmUCVAnxkkqpJlwiLIGJquPj/BYSXnBEud04MIHWwGI6+53oRh3Ky7EukCj0Uedu+EKTc2eRF40Bk6spIUjJqwQRyTp6dqSQ0EivLq61uDgmq6HpUU7tU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685373372; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xa3W4ks4KaGBCSg2VtHmedHKw46guDrD61CPjub+TOw=; b=ZpHXxKEfie8PbEHz22IRevXkcCYm660P9mUkjSG4z5kHoHfGWBKFlW8SUMLBrGQSjGTNZjmL542boM8NGfMH5hfiijA+k3FXcTWCfAwUhPs415gOaAlrTj9rft9omU6nvACeIVfgRx6qWVYA2EfuD4V6Y0qElhcUEYVJYHxvaYY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1685373372560167.66190385826235; Mon, 29 May 2023 08:16:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q3eak-00047h-7q; Mon, 29 May 2023 11:15:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eae-00045n-4U; Mon, 29 May 2023 11:15:20 -0400 Received: from mail-dbaeur03on20705.outbound.protection.outlook.com ([2a01:111:f400:fe1a::705] helo=EUR03-DBA-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eab-0003O3-Ph; Mon, 29 May 2023 11:15:19 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by PAXPR08MB6382.eurprd08.prod.outlook.com (2603:10a6:102:15b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.21; Mon, 29 May 2023 15:15:11 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158%7]) with mapi id 15.20.6433.022; Mon, 29 May 2023 15:15:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UVN5Tq++d0e+ED4oOKciiwRF0fHQ/DfMvM6NTeSF2ztPFJgU6nIbmyhGFE1JsU3uA72Htv3dzlbHJG4ULlu0YdgTK70hGE8cD0PD1Fzl99ncIFIBBBtwtr/uBySsncIcSuIFK8Rrc1d7+0dklGkQ0u7V6iR5LptmO24G800Ntx5eRj8OvOZYMnfugYhSerWc07a9+WCMUy7adptGXKihT2JFLI3WL/ZxuUn2vhVXcxfIh9Ewr/9Fs4YLUjTWyzPImeK1BVXMdh8UGYLFHJm+vjg0uoIbFPVsOJ9hrVmYCJSVbZLLjQiDI3CvSRzwUSLX8xu7OWzTIEfUwaj4TeboCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=xa3W4ks4KaGBCSg2VtHmedHKw46guDrD61CPjub+TOw=; b=fpq/qQGR+cVeZbRhNI6eUaSXqTe2scR+x3qTp3sVvR2+cN+AldUeLVwRSzJ0RdbjvXfKgeRgckm6XO67tQMUSuV3sw8UxlrI5qnEtrXbEwgNODJ9vSDUL/fJIMbr1s1KpYkKkRwyrE+TxHd0kCoD9IY5vrYDJSvFzdz4rLyu/583DGs7Wri9SBYODXmNsaFOKfNH1atVgY6QqC/cXvVk4SgbJYxNp6JIzoP68aEAVXnF245ONLAK0eDQhPbg1KNhVW5LkgeMF+RkVbqyPvyadzEH8/rjxpCy+9FMd4hYdEXi/1ICiYd1pvafLEvqpUj2qj25XaUiNqroC2CF0MToxQ== 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=xa3W4ks4KaGBCSg2VtHmedHKw46guDrD61CPjub+TOw=; b=h0buOcb2jDFDhDXynOduiS8iOePmP99VKCB7roj2AqdPgAadZ7e3tuIOBtATXPdAkM2n/djNZzmoF4ORwFIzSoo1drwEYLJOwQknL+YtyW7J+ehu5LWRAPQGX03UUAO2c/REaWRTpGXRFBXrLdwfWTVTU4MkIlGfKche1zTXjFZRmE6PWopmYWcvbQwjE0vpadJV3tFAyqIEnK0GgItSVdkv8gGrhq2H/RrhWmIt2Qg7p4VUJTMuCxfdsGNDERYu/0pxUsaHPrj9Whg8d58Hscb6OU5F1T2aqkzJ44dk/euh51tdyhoGb3vlnvQIovb5yJjEggPjcW5cirCtJTtYag== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v5 1/5] parallels: Incorrect data end calculation in parallels_open() Date: Mon, 29 May 2023 17:14:59 +0200 Message-Id: <20230529151503.34006-2-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> References: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1P190CA0041.EURP190.PROD.OUTLOOK.COM (2603:10a6:800:1bb::8) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|PAXPR08MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: 9d4425c0-74ec-4635-f8e9-08db60577f07 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /i2xs43eL+l6B9H7lwUFeaYM0gQ0nrIehTaupL7PYqK0Xc/P2BWr85HYo8foy9TNZSugdvNXifF/JSQbej7sb7AJOp7kq5sKRW+YaAmF4wSjoQuyrzs56lAEKJqIwyUM3nUEpU5DxaFe3UyNSFtHC6a5Q6FR5norkHZZrcofxWvZ773IkrJB/AI59tcRdkPENb8Re/Y+RU9oHoSOVXq2nsGcA693KYVMUWx/aFkNNG6Jm8/LvofD3S6w+YLCPZXFaiRapTeeZo3Y6V4a7aTkhJj4DMY7wzhahByTDBTIP0qUbNhx6kgYmIU0t0ny6evaeb7xsgyjR2gB4ortwwWArQT8byeuBzYuIIdO5xG7yI8XlDRQFHxjj1iLV+N4W0u68Ah5RP6p+B63qNOPDHiMFXhG4+Q/rxENisuIUmuE99F7/dmVcrmp7wHjkVShWM8lfz1fQJtBhg4xLOlHqdnIvPmKssEDKGTwJOTe6wIJJgt8zCMAbwbsYIeN264vI9/S2dLeXzQYAB33jv3qDpmo6y1J/b+5+/z6oIV8OhGYeHNzCsjW1YQ4aMj3+smgwZ5V7VkN7CuqP8t9jE+1gZ9K6cjmmTgGqbM1v642TmoSJ2lYOTx+uNRfv9mduVoBB7XG X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(39850400004)(366004)(396003)(346002)(376002)(451199021)(6666004)(52116002)(6486002)(2616005)(83380400001)(6506007)(6512007)(36756003)(38350700002)(38100700002)(86362001)(1076003)(186003)(26005)(2906002)(4326008)(316002)(66556008)(66476007)(66946007)(6916009)(8936002)(8676002)(44832011)(5660300002)(41300700001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bLk1oCO30qJeDqbmiDCP2K38euVQWxvHh8CeIXWjJxDeOW6KUME9r6/wNb6B?= =?us-ascii?Q?aVK7SKhvOAU/41ROEBFxn0Hc9Zu8F//wXbgOWBa/9nm8Fj5hODN8q0hrPy36?= =?us-ascii?Q?mnpzd3q8CWuvZmuco1c35oW9mgKwNsit4IR/njzhPomR2GKkasoWei3k1FtY?= =?us-ascii?Q?l/O+afnQYv3V3dkhiuz0oykUUNjRZPgKYXlA8wjI/vRDSCF0uS3prv1lx4hm?= =?us-ascii?Q?EqzPxCYLDEXvZ+QBchzay+IFBYJovyAaNxDnT8oC7X/2auSDBzg4qusB8LZ0?= =?us-ascii?Q?++qG4E3vowQ0QKA+MiJTlDZ8L3zvUhLa0sGIbnwn1SefQLupmT5ChoXGPpKD?= =?us-ascii?Q?zlMFhJ/Vl0VV8IQkNQJCIOy4NiBLGX3amwfNr/VRzloEKQ5ym4Em8nZ19WsG?= =?us-ascii?Q?XhGSEDVRx/YfRXp1f7+YphRDWeRINvYCGUnUsVQfjAU/ql+potGDawVDUUFU?= =?us-ascii?Q?KMlk7x1F0WiF3uKx9Dd+LEF2fKu8fChoCb2KeVJDtVTY6cWyEG8Em9dArGxY?= =?us-ascii?Q?ZPtl+VnzkO1ciulMcJ3VILre+SQKeC1yDbIxcwnIvAYzbJG4c84aao5jX0BX?= =?us-ascii?Q?py/kjCnzifbWKYZJZ9cSslKGerJKk1PyG3Oaxku00ii523AfSC/Q+acZBQHJ?= =?us-ascii?Q?EmO4KmmJM+JYH4f9/mv2ZnfU8DSMy72OwK0k94EzTFdZV/mIH65KovrhKSc6?= =?us-ascii?Q?D8rdv6LvKMDkpYmOiqvIaD4HHcFf6xBt37wx99p6wcFJkuTtzCPpy0zMl6Rf?= =?us-ascii?Q?oyUAOVJITiXvaZm2gpKdyUBgicJpp9tMrgmfoeRoNHqak+nGLTHrgfYMSWdt?= =?us-ascii?Q?lY21MUUdb96XaGgqUrh8H99ay41I+mpqfe0YIUDuSN3N+gErPRGgTi+4gfTG?= =?us-ascii?Q?XzL5K/q7MpP5VeFFFG/NMK6GvoMUO4PRxokeHvDHgRBvhfpoLVcl15adhIET?= =?us-ascii?Q?31b4SaX3M/gTQ1986ZkiTQgg6zasLeHt38HOkGUa3QgCMnINPWhouvKDzF6O?= =?us-ascii?Q?2EBhiWj0beoQ8j8cl3Oy9KZHwHg5sSA1amXvb/IQIruFcmYWbW9SsBKOJfOe?= =?us-ascii?Q?mXbSy14UkcJBeAmZ9Rw0UZv/ubYyIAAruXAn06eV9q12Uq2ZKVPHhuMoh9RZ?= =?us-ascii?Q?LMCczKeMH9TwDptOVlEhLeYO3TacNM9q6k5a3eVWswtVH+nVTK/3wob9hpvM?= =?us-ascii?Q?0lm0vHzaQt8WO9edI/5L5tTKiOudpWdDf4nEu+I3mBz4xr53+8fiXeNzXGCM?= =?us-ascii?Q?zCluVHYsdmMSPVCF8wXX9g+mIBuLCGx4TXmO6YnnIqopwaGRUpHNoZ70ukTX?= =?us-ascii?Q?KYk4guD9CoB5+vNVTDYAmNVyZuQPtklqk4HeGA8y3mZN7KxKbma3MZj9N9A6?= =?us-ascii?Q?U0bGEBI0bJL7IIWRXumgYgS21nl9KL7B8H0BicgEapn4IZS+Tj7xNFw4mMJ7?= =?us-ascii?Q?QPW71hmJaQuKok8y7AiZSklccURxyO5lEOjJv5fBgMoT7Djf6Z4nZom9s/+Q?= =?us-ascii?Q?TwN+DdMGHlZfWuCQiVk4U2AZ1ewHU1ufWTGLk45sC6tJF5q3J3vVbSa8LwT8?= =?us-ascii?Q?j5BzzkuFFEIhFO7Fhzj9qNuWRgfhhg1ahhuinVjw/P+UmW0eVNr6AhbbR6rZ?= =?us-ascii?Q?rqIZGFxHUGz9Zucy6w1WrvU=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9d4425c0-74ec-4635-f8e9-08db60577f07 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2023 15:15:11.3955 (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: 4N6O1VKcxVHdKEvEjbLYhO7u/wvRe9CrrHh5Bu+5pePoPylajHf3qOPerjAX+rcDKjMCttmhDdoMPVDRnfh0qGPlYZUdtMBvHmPJ9mciZWY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6382 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe1a::705; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR03-DBA-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1685373373499100001 Content-Type: text/plain; charset="utf-8" The BDRVParallelsState structure contains data_end field that is measured in sectors. In parallels_open() initially this field is set by data_off field from parallels image header. According to the parallels format documentation, data_off field contains an offset, in sectors, from the start of the file to the start of the data area. For "WithoutFreeSpace" images: if data_off is zero, the offset is calculated as the end of the BAT table plus some padding to ensure sector size alignment. The parallels_open() function has code for handling zero value in data_off, but in the result data_end contains the offset in bytes. Replace the alignment to sector size by division by sector size and fix the comparision with s->header_size. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev Reviewed-by: Hanna Czenczek --- block/parallels.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 7c263d5085..1ec98c722b 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -861,9 +861,9 @@ static int parallels_open(BlockDriverState *bs, QDict *= options, int flags, } s->data_end =3D le32_to_cpu(ph.data_off); if (s->data_end =3D=3D 0) { - s->data_end =3D ROUND_UP(bat_entry_off(s->bat_size), BDRV_SECTOR_S= IZE); + s->data_end =3D DIV_ROUND_UP(size, BDRV_SECTOR_SIZE); } - if (s->data_end < s->header_size) { + if (s->data_end < (s->header_size >> BDRV_SECTOR_BITS)) { /* there is not enough unused space to fit to block align between = BAT and actual data. We can't avoid read-modify-write... */ s->header_size =3D size; --=20 2.34.1 From nobody Tue May 7 17:05:44 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1685373403; cv=pass; d=zohomail.com; s=zohoarc; b=PD8PA1tBQAjNyWNMd8bslhKl3puZoJDCm6rUSbHwVEbrgesK33Fn0rwoX0b7ODfnM5lUe+jnLNd4YaI4Fqsswy6QqqhipJf1RYZhYVkClrza+2Ax9Hggn+ckcP7NsntFa50nf0tI2d4D3lsSq/b54WSeON8o+yH8c16MYwAf3HQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685373403; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=BolsGWBq/BsLs02RR8+MaPgxDfT29zUuVPmbEntuAiU=; b=UVWbo7vuhcj+a7ITUo5ODVHQo9ibRYgNBdrWxAcqka8NZAhyHhuigNlChXhHvrrpUWYfYC0nNcX9RuL7vfNWCfqfQ63u7iN8gCmVg/LLushhYzKi/8aa8eBJi/SjzHXf5EaD7mV+MMRi1G1SIVIyIwnFVPjZTep4jORmeQj5c3s= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1685373403959692.0390573223368; Mon, 29 May 2023 08:16:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q3eap-00048X-R9; Mon, 29 May 2023 11:15:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3ean-00047z-OO; Mon, 29 May 2023 11:15:30 -0400 Received: from mail-dbaeur03on20705.outbound.protection.outlook.com ([2a01:111:f400:fe1a::705] helo=EUR03-DBA-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eae-0003O3-Pl; Mon, 29 May 2023 11:15:29 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by PAXPR08MB6382.eurprd08.prod.outlook.com (2603:10a6:102:15b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.21; Mon, 29 May 2023 15:15:12 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158%7]) with mapi id 15.20.6433.022; Mon, 29 May 2023 15:15:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VcNPc57Xog+OHRLn1/i21izF70zGbhaH3dgQny2cSRQcHbXTmCFktDzYsxZtlZpz01OMB5PPTcM7ue9Sx49Re2VqspQuonW5yO34c7xC5qaLOS0SxfdnOIX8e3XIkOV1RI9Z9qa0AnOBlqFflq7zthk/bdYkeSHh3dxmrwv1sHgmoWtelLQ6jmT9U1tgL2CCzlifVatftvbu3hBZewoEemnwO+JTz/zU/TaJ4SsvUVysNKhOBLTKTC2XKEFI1rwqB/QAFTsgwWA/PA3r3uwg2uZylV0+LQHwLXowl5P9h7/fcEvWcBbjsPflXmR7xOaJJZ1DAhXqXEoRlQDK6KF8bA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=BolsGWBq/BsLs02RR8+MaPgxDfT29zUuVPmbEntuAiU=; b=HETIGVdlyvgwCjx4sKuaWzz6h6fX4umTTK4crlbaPOS/ufiDIZ5y0L+B9Irt/cY9BwD31dsyu3kOQ5PpymlOPaxneqIdNunOay4prZcv6EAmvlW8WH4HG5QC7zvhKOGd/BXN/IafRm4RoefnXsdhwnM8cYrEL8THVVDJMX+gkaCMHkTvTR5M37LasoxVc+nNXJi6y1nHMHbNXqt4Sgle6XbDL1c9WYWwdDNWjKd9qeljow9azWaRhB04ShzOE4PggFrfSEgIymtnMN8jKknipdDFHlXrrlhQj8jnhOu6vTOE9riQss+i5KbPX4K0wSzV1A3IV6t9MbTGVY/TTpy2kA== 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=BolsGWBq/BsLs02RR8+MaPgxDfT29zUuVPmbEntuAiU=; b=rDA0Df8heZhOZrM2sJpL8ZZJdW1PbmCvfKZ8E4HOTyqoFnOR8u8GJYKJNiwvnFibRbFqpL3hmGns+5lCZ38Krwwsq9ukPWT7Z1CRuudIfJ/Qo2tn6XtcZiXPha9uWCyR6hg4TjYwEa/JZwchyGeAKWmI9rsIfsUnZj3jcJcbNwYhCnkGvHghP4+fhBWNaMyD49355y2DVqYhHpeYNqM7/mxkLalsGxMLJHjM4k3wTSYftBMYo9wyWo+eLD5odYBPHcDwy8S4tF9495VVFqP1HDZ8pNn5gX5YUlAE+ele27QVz4GWtdto705KLuMUkRS4kvlFRACz81cbWfGb8RbXOw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v5 2/5] parallels: Split image leak handling to separate check and fix helpers Date: Mon, 29 May 2023 17:15:00 +0200 Message-Id: <20230529151503.34006-3-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> References: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1P190CA0041.EURP190.PROD.OUTLOOK.COM (2603:10a6:800:1bb::8) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|PAXPR08MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: 670cb8c0-ba5d-4875-2bcf-08db60577f60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lzDMm18i/N1qbvmpRAnV/ZLHXJeQDwXnGShDi1H1+jiS1TJWsdzx6BSf2Y/WnMFinzzt+56U+ewgJQg31bRboH1DLUQOu1I/LTnxL539d2xu/nUoRvWZ6nMi5hOmARADNjz5Vg3NPXM7aA4SKNuKH/4FVYAK/pyYOrt/z7XuTfBcgQy17S3dauYN9mhai28GVj3OEzLwNEqWvTO+b+spFYNoqTI3VM+vTDe9K2fhi7E9x0S2wiGizMTlAjgQdKUjwD/LfWkLqCdkMqiuSDMG2rdFLaKyxN+DPcid1G8wkEWvIQq1XeM17zQyEUidH5l+KiylvipitozZg3lFGYHLPIFJZq+BzM+L7VNiLajLNlFfBzXiMexvBsC9tmu+A/J2EFq7vnx6gyvN/7FnPkss6POTCoaZuXk5RtdFvSqHQWyBKnyJI3VKqxG+gJYPBPM4WzS1xFVtWe3FsAFSEMyQjzDq5F6yreaHLXRmEGuYSLkamK2DQ/scOqGt5oi/6mj0dZ994LSxJIpfNFnQhjYnUz9xaOpwThT2Srt+yKAy5JCKb4oSFcgID0QsA6vgFu1M2tD4CBtDEPTqC6rhLMsN8mCzJzHXpIuAYWY5n7NSojaGMNHzIgUHrp8alPFDXBwi X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(39850400004)(366004)(396003)(346002)(376002)(451199021)(6666004)(52116002)(6486002)(2616005)(83380400001)(6506007)(6512007)(36756003)(38350700002)(38100700002)(86362001)(1076003)(186003)(26005)(2906002)(4326008)(316002)(66556008)(66476007)(66946007)(6916009)(8936002)(8676002)(44832011)(5660300002)(41300700001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3MUH/QaTbTJPu3alHe4w1bUfg2FQWf7t0rZ05poYReM0b7G1HtVT40L1iEWv?= =?us-ascii?Q?psd8jkHC+wb63BBtUWrKNMoF7fUfbSgLll9VSlKhAuGMsY8a80nvFt/m8i5K?= =?us-ascii?Q?sl8TjrI43Sa/o2Wy0ZSfuGQkK7ts700uImUunDzTYPwgtqEI3obUoNDxdsIY?= =?us-ascii?Q?aRfZdZ5dKkvtBuBllPLvxpq8ukNLKV3eCqER8BRx81fmtjyWh9oA1dogxUKc?= =?us-ascii?Q?6Rw+JlQbjZmwQWH+Guhf1KVJRI+QbaqbVCydeza9q6fzwBsgIwtZ3xptzGQ+?= =?us-ascii?Q?CTexGatLEI/9iz6j53npONjSRKiG7iALHy4JLfgjFnGsmEAnVPMioKxxkHmD?= =?us-ascii?Q?TCGYBzruj7jvcaaR2/K+fvJ8ih7WAXl3X7DpNB4bI7cG6VnFsUjb0icl2h3j?= =?us-ascii?Q?KI77Hby0gZkLcnnfIeOaz+zEC9kEegP7hfjWYWPr1/ESISs0rgkED9HZg2ti?= =?us-ascii?Q?tj7kU+U8fwqLtQG2a+/5DbZrw8Gul0roK8ehBFpJ/WGZGWAZfP1mPS0P9YRr?= =?us-ascii?Q?fM3dqoR1o2GQJaGAB6bmjRonLvYZiFL3YAYedO/tsH4b8UEo8/91ESTSsJ15?= =?us-ascii?Q?Ce/+QFIMY2T5WQKxLiiPZkImgjJQyTSBjP6tu7coo7gnOmnYPLKOvE9+bNPj?= =?us-ascii?Q?5VasloV6l1xYlphMZN/yGmIcNo6lKMalrShA5em0S22OEnPw71LOKUsrv2tP?= =?us-ascii?Q?o24MNXOYsbrtbLOwjz5/dpZv6RT9+y1WAKYhy1sw0yjzEDp0vCp6i4KgI1Ww?= =?us-ascii?Q?KCmFY2BAlN35NsC0O4FQXZjGwO1VCMkfgUfIfGdtuGPcWBTWZ488CoxXUIJ8?= =?us-ascii?Q?5v8L5n4fTXkpqpU8ZqP8ywdg0mCkAOJo6KMUDiCPh5o93XJt4qm5VVduXAUc?= =?us-ascii?Q?/Z+xxovAgoZR3vhRws6Dzu5ArBQeyAXJViQs4/ysnQ704u6HLYc3L1P7faYZ?= =?us-ascii?Q?jpd6hLURuJyxf4YXPxmnf3rxbwndzqGNF88w3E5jxDrzXOAJs41aOg5DfP60?= =?us-ascii?Q?K2AEzCQZX35f7FqcdfkHuedyTwRkCHFlNweIqkbu8kk5NFpAb2b7mt+zE2kE?= =?us-ascii?Q?EPDdC2ohK3wRM2D0ZqNwNCYB7D3ZP9wT/zbTGii6jEVmFsBtcRJYb8G/ivd+?= =?us-ascii?Q?5zHQjgjg1I4E0r5qHxkx7slx3PIqwLNZvgFGANs+QhSJKKstYDfIZODkqmqG?= =?us-ascii?Q?HySz9sEWEdXcs4M0oGSn36IfsBAPFYlbQEy+riJsNrRLPmk/h0VlQbHFoxGG?= =?us-ascii?Q?C40PLPS4VNyVKKEAuhlJMq0b+CIhZcic/oaG9Qmf25t45YRNXCJuNKLh7fgg?= =?us-ascii?Q?dnm/bP5voBLucfjuQn/vxSVBrZBZ4vdg3ZVER8OH+1idOixoo3B1O/gq76NK?= =?us-ascii?Q?aiMa5MUBRt3PYuJM1uDed8D2PfXtypss0qkGNRU9mZy9guReR2six2AkdfbD?= =?us-ascii?Q?mmFuaLJWZPjIpWbjEShpx5hD1/refz6KHh01ncEvnBuH2+RSnxVR2MKqLRnX?= =?us-ascii?Q?AICLHhqmjd/aDKWb1gmZJLqHSC81JITIl3QS0lZOjgp+muNxzjCk3TM3umdy?= =?us-ascii?Q?EOD35mSSQng9MtjoCshEkbjuLRfQzpI9FdJat38stq1qTLpZX0J2N8GChg4P?= =?us-ascii?Q?z4Z3o/mwTJZUL0vEnmzBoH8=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 670cb8c0-ba5d-4875-2bcf-08db60577f60 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2023 15:15:11.9479 (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: EdRl51G2hKvxAwGZZjsqrOzrMY47nJED5slhqpdjDvFRoatrmyP4wfkM3Rh3l6AmXzGgGIAB/jWsfgUZDUbDTzoamYLEQqxBQmor7Bjz3ek= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6382 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe1a::705; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR03-DBA-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1685373404954100003 Content-Type: text/plain; charset="utf-8" We need to fix leak after deduplication in the next patch. Move leak fixing to a separate helper parallels_fix_leak() and add parallels_get_leak_size() helper wich used in parallels_fix_leak() and parallels_check_leak(). Signed-off-by: Alexander Ivanov --- block/parallels.c | 86 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 25 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 1ec98c722b..64850b9655 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -482,43 +482,79 @@ parallels_check_outside_image(BlockDriverState *bs, B= drvCheckResult *res, return 0; } =20 +static int64_t parallels_get_leak_size(BlockDriverState *bs, + BdrvCheckResult *res) +{ + int64_t size; + + size =3D bdrv_getlength(bs->file->bs); + if (size < 0) { + return size; + } + + /* + * Before any usage of this function, image_end_offset has to be set t= o the + * the highest offset in the BAT, excluding out-of-image offsets. + */ + assert(size >=3D res->image_end_offset); + + return size - res->image_end_offset; +} + +static int parallels_fix_leak(BlockDriverState *bs, + BdrvCheckResult *res) +{ + Error *local_err =3D NULL; + int64_t size; + int ret; + + size =3D parallels_get_leak_size(bs, res); + if (size <=3D 0) { + return size; + } + + /* + * In order to really repair the image, we must shrink it. + * That means we have to pass exact=3Dtrue. + */ + ret =3D bdrv_co_truncate(bs->file, res->image_end_offset, true, + PREALLOC_MODE_OFF, 0, &local_err); + if (ret < 0) { + error_report_err(local_err); + return ret; + } + + return 0; +} + static int coroutine_fn GRAPH_RDLOCK parallels_check_leak(BlockDriverState *bs, BdrvCheckResult *res, BdrvCheckMode fix) { BDRVParallelsState *s =3D bs->opaque; - int64_t size; + int64_t count, leak_size; int ret; =20 - size =3D bdrv_getlength(bs->file->bs); - if (size < 0) { + leak_size =3D parallels_get_leak_size(bs, res); + if (leak_size < 0) { res->check_errors++; - return size; + return leak_size; + } + if (leak_size =3D=3D 0) { + return 0; } =20 - if (size > res->image_end_offset) { - int64_t count; - count =3D DIV_ROUND_UP(size - res->image_end_offset, s->cluster_si= ze); - fprintf(stderr, "%s space leaked at the end of the image %" PRId64= "\n", - fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", - size - res->image_end_offset); - res->leaks +=3D count; - if (fix & BDRV_FIX_LEAKS) { - Error *local_err =3D NULL; + count =3D DIV_ROUND_UP(leak_size, s->cluster_size); + res->leaks +=3D count; + fprintf(stderr, "%s space leaked at the end of the image %" PRId64 "\n= ", + fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", leak_size); =20 - /* - * In order to really repair the image, we must shrink it. - * That means we have to pass exact=3Dtrue. - */ - ret =3D bdrv_co_truncate(bs->file, res->image_end_offset, true, - PREALLOC_MODE_OFF, 0, &local_err); - if (ret < 0) { - error_report_err(local_err); - res->check_errors++; - return ret; - } - res->leaks_fixed +=3D count; + if (fix & BDRV_FIX_LEAKS) { + ret =3D parallels_fix_leak(bs, res); + if (ret < 0) { + return ret; } + res->leaks_fixed +=3D count; } =20 return 0; --=20 2.34.1 From nobody Tue May 7 17:05:44 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1685373404; cv=pass; d=zohomail.com; s=zohoarc; b=l+/XjOxYQhApWpT2wcwyJPQunOrLS8jNkB7XNzjeuECgdSGrLuQ3drI7Mn7DJLHA6HvjksXdoHGk7HpETiLknlSLvtsJY/VnSOIkh6eUE2+dFfBC2k3FVYhTrs9vsEcQJiOoseN5Z9jmvawlq0PnzoDwQ3qd4CZTW0wrsQLA5v4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685373404; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+mnsL3AJogepgecIdnap40aW7/qrXTop9gwA2v10OUQ=; b=IgPFvdLBUTduPqeOiveeQC210BsQuAK6q55xNW324UXMr/vOWxan6NITYmUCW78wQqG9qqoHUJdsT6mafnyvFlHnVNiO5gTXqYC3/7BZTW1B8cRh5P1p1btKG3ytLaX9kOljYcR9ZRK/cLrEOFQhXxKoJCwmiS4BamNAZrW27Ds= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1685373404052371.43621703614565; Mon, 29 May 2023 08:16:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q3eay-0004Bu-7C; Mon, 29 May 2023 11:15:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eat-00049T-8Y; Mon, 29 May 2023 11:15:36 -0400 Received: from mail-am0eur02on20715.outbound.protection.outlook.com ([2a01:111:f400:fe13::715] helo=EUR02-AM0-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eae-0003QL-QE; Mon, 29 May 2023 11:15:34 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by PAXPR08MB6382.eurprd08.prod.outlook.com (2603:10a6:102:15b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.21; Mon, 29 May 2023 15:15:12 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158%7]) with mapi id 15.20.6433.022; Mon, 29 May 2023 15:15:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cD6Rk7vztDfJRpUTNwAOZjgVf7F3joXzxzTg+E7sVFl3hAX19p2W3k6JeF1aH4Pz+86rNEdvawQJlYntSaGREp0IfAITEp/fwATqIpT/djsO3DRqntfaXVGKfS4yj/RNu+bh/bkBqtHRVuvCCn6ZAYRUSb2bkbUUO/7j3EzkZr4l4Vo+pyNlAHzRkKR5A6AwiLzd1oDqalBV7be1yWzPCHCh9Fq9BuFKVSO2hLGBSHhq4XJo3ubjA18RXIi4/aed5TpsdO0pxc1mlE4RCfTYOQ5+dpW1IO9NRYNKhUZsmRFO3BSIBOrCsOzl/z2hGydHGKiX4Wt8tDLp8HQCZtmlLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=+mnsL3AJogepgecIdnap40aW7/qrXTop9gwA2v10OUQ=; b=RxmNvkr/pfVSqQ6PL8VBtJo01f4quZl8M9i3Tkrpe0nE1IDwpFRYa9fSHnaCZymjEgO7khVQ0pvd6MoqpNm8cqQvu4KMa6Cr5Gv8/2LCc66aR92Qmg1Zn9LkShaby5xTDKuyXXQFFTp1aSQTvObxXcnsd0Cznj9NyGUtXnWGO0oID9b5MqHwnkK4UhWbaE8PA54v6jCHuuLG8nb3ORAfLBTopwaQbVnmLsAEPF/N/jspPHJ5Xb98nZ0qFxd4Z0vUbhrMvsO3jI4Zya7NEhnXjCDrqY2EEVDCTP+U+kVsVgesuiJFJR7++8RHdFr8glsc3gSr9k2Km8VOFYDNthv6UQ== 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=+mnsL3AJogepgecIdnap40aW7/qrXTop9gwA2v10OUQ=; b=ey9lACOCaIMZloRupbVjyCTCpU+X9Ca+Lkl6i7hu6jbYF6v3/Frfn/EhmuLobowpDITFIT28reob6rFcH5yxptIyBdolAC+D7/v7YvpVzLFX8stZAFS6wjMb3i5AuNPhwkiMWWaXFXLBxhtUYTZzIJyFPHdKNf6qSkObixKgj8Mbbect5QWMgL3yqMZg63jXtO8GkV/jGU7W8X8/Mk6XxqUdEY7yDcQyBXgkxZ7ccHzJanJ9aNi4ZvRtnCKhnPgQWJxm8nyv+QpZcoNC2146cI6DR5DQoPdJOKY8dF3ihdRlKuuaojXmGim8S7lWKu/yQnIWbCXY6F6kpR0d1/uVxQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v5 3/5] parallels: Add checking and repairing duplicate offsets in BAT Date: Mon, 29 May 2023 17:15:01 +0200 Message-Id: <20230529151503.34006-4-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> References: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1P190CA0041.EURP190.PROD.OUTLOOK.COM (2603:10a6:800:1bb::8) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|PAXPR08MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ea7d1be-9fbb-4da8-9a36-08db60577fb3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cg5TtakWK5YW3qQuN/82V2sJMU6d94TS7nQXmRP1Bx+l3+FF0doydk8707K3jAT51mtZ0ISodw33egVOYszwdQBM1wPU5BLw/JWGkZru9nnVC9OxhC7zDxEYyltnVp+7iUH3bvjeRC2J4T8h92Po9xB82vy/W+oH1zR8Deb/Es7km9Kl3tSXEA+//Wn03yUr4Zpykk1uHZYfnKKav4i8hIBWoMNMaG5VT+4v5UNSDkSE686HpG90saYhkAjMYEK8hwuAo4rZL5EHsd6f3+P891ftTJTKh2xd+Ssq608tmMJ2eN0vuw0Bn+27n3LByh4OhPHIvvPIjAVGn0hCPvJJvI/B6wpJipjvAI29yhM92fDTtfUKgyNfYOhYzCNwY3UiUz0VJmzGjev6TNEfBpJv51+EPsiMiki/I1hqUyAXEeOwugN/t6J6rPVz0PMih/CFchJHQ9SzQlaal37cgW/DdgyPcCyGF5h2Komz+Odz2R42UoejuLpEjA+7IAHUmaLUYEpgBQHsR/mqIq5DHo32Bkzkq73gdqV7WXuhXrYKlnT0ei73H7r3Is1/7JIGsLLq9fuc41pPe9yOllNU/XHKZMt0D9uHuUnu8Pltmb52Py68ZgEjpP0hxvS0VHk262kF X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(39850400004)(366004)(396003)(346002)(376002)(451199021)(6666004)(52116002)(6486002)(2616005)(83380400001)(6506007)(6512007)(36756003)(38350700002)(38100700002)(86362001)(1076003)(186003)(26005)(2906002)(4326008)(316002)(66556008)(66476007)(66946007)(6916009)(8936002)(8676002)(44832011)(5660300002)(41300700001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rn06hyWGhXfYJwozG35xMmqxvLAb5ov+5+ifEFjJmRYJBAXZullxc7GTi6xj?= =?us-ascii?Q?+rOkgeMOQhf8w82IbYrdqKUXjM6NCpgIbL+l59CBSqVnYTgbwedglOmFOYC5?= =?us-ascii?Q?xR20h12gsO1f0wB14fpB59UdVeioJviSUuxMtHFMctaI7y/rHWYj089wHUuK?= =?us-ascii?Q?JNWHmVoRgwoTTBv0wmSt237+Ivk9gu1i0fVCgbEPXlYpNiBleddgZSiUSXtu?= =?us-ascii?Q?Fk/MGr0zYkmruZhR72SU3yc0TaBfq+B/ZEUyiMLrBmIarf7SIaF4eMsArIZZ?= =?us-ascii?Q?KH0V2YrByB5RyWW4O/iQ4a8rW7OwK2bmjs33mRSZrfS1RVqSErPvc+QjzjFQ?= =?us-ascii?Q?gVG8Pcf38EgTk0WOteMQ+dqJtF4StY8/zwpGNt9gE8jD2cftawPNK2Rc7R5Y?= =?us-ascii?Q?7JCrwBKBO5mvBGdEhh4OXibZVnE5SEuk9vnOXreK+6B5LhOYlIOXOApbU+tS?= =?us-ascii?Q?//D9xjVRrb37yGCd9PfVJxYselqikhhExxSxK446ODbX7Zovf6WI8c5YSqo1?= =?us-ascii?Q?samkcQZOfx6qgyug5occoPm/NuUVYNopYsMfVzFiyo6DHGFrT+aviMyJxETU?= =?us-ascii?Q?Y3gWQCrm5Ev27slhYzhqxWCbOjAGFu05uCvSlsPFTu0lKIFx58lBngYovObL?= =?us-ascii?Q?3i7vrmwlCFBQxfbACWPYXiZjoAtK/REk2eA6Es9UTp2tuTzr+EZriubJiZ9Q?= =?us-ascii?Q?D+Yp6vmUrHy6mRXX7F1Ad3qLeo8gpaWPU/KWE1sPTPA/kA7DaWJsmQgy3Wc/?= =?us-ascii?Q?miOOguZ4+hiOnk/DT7XeiREp+luDGOFACJR7V/BRfqTil4jPdp4J0zPNnoze?= =?us-ascii?Q?YUihlS7tNeEdkmcfTlmEi7jnyW9gJ9gCyyTgOuXs4NKGFn9PTs5vOZgrvLIj?= =?us-ascii?Q?A3Jrg9+5XiGQ2Sqj0a/WULRz+xaVRZumqVgDVgoS8nrstUIUhrTGJiW69yr1?= =?us-ascii?Q?sI3LegPjYmD128ofS3jiJ60CaPqYktFDVspRCM6LF+shPaUU0eMGAhF8XYyT?= =?us-ascii?Q?JHlLTREChmp8xw61fAii90PJN1SMXVIUVavL0nmNRYWKDxF1bImDfXXGKWj9?= =?us-ascii?Q?lZ8VPCyPitJAYwrYlwOm7v5jV0dizOhP442DoUFdkox6jao3ve3ULN2xt/ug?= =?us-ascii?Q?nEvMZJ3f9gp5MPBkaNdH5qXyE8PyuKq7PjB7OEAJQ7MmdYvoIPl2yvccgQAQ?= =?us-ascii?Q?XuCiRBxToayPHin1bk0BH6CRWZA7Cl//zNcsHUrt31faF17jTvQFROp7gmrU?= =?us-ascii?Q?L5OnJJKxph7on148nw1GvMeJ5BHedFYiufC5baJ68lY3svi667sGb52T/4jl?= =?us-ascii?Q?Wy8xOVYt1v4fHJjOc74Jk/Q95qSIZ1PHaEH+Gzu5gXi3Mdkm7zd55UhkmO7N?= =?us-ascii?Q?q0HGnkbbPFkGZqvdK59mruT5Dbm6PWJkJ1dKyzrKROkbcKn824Q6wmn923QN?= =?us-ascii?Q?LJurDLHKQT0LaXuY5ItbAYFNOVUMcRPOPdiMoEn4Y6T4Q0ci2nt/vQieS1zk?= =?us-ascii?Q?7V5HTdWCQcwRYtCEtAdXt4MWsCnopIEVf0YqZw6lAQYjFBooSbkEikh6WWJF?= =?us-ascii?Q?4Z40oPzCMHRDw7bEQoAC3WiXqDv1fTBYg1QcJ6gPKQFHVZ2WfVFZyqj3R2JV?= =?us-ascii?Q?9i+oYo177HnqEmo6UwVFN7c=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ea7d1be-9fbb-4da8-9a36-08db60577fb3 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2023 15:15:12.4932 (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: 8TKIY5vtaPo7Vzh4rBMItO4wCKFklI9UV4SQ9UfCQ5X/CxzJ2OdU7+T+ccNtYdaWA3YmLb0N81fkBrAtbhAD3zdUq88YIXH2b+WftNJy/es= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6382 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe13::715; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR02-AM0-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1685373405133100005 Content-Type: text/plain; charset="utf-8" Cluster offsets must be unique among all the BAT entries. Find duplicate offsets in the BAT and fix it by copying the content of the relevant cluster to a newly allocated cluster and set the new cluster offset to the duplicated entry. Add host_cluster_index() helper to deduplicate the code. Move parallels_fix_leak() call to parallels_co_check() to fix both types of leak: real corruption and a leak produced by allocate_clusters() during deduplication. Signed-off-by: Alexander Ivanov --- block/parallels.c | 138 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 133 insertions(+), 5 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 64850b9655..9fa1f93973 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -136,6 +136,12 @@ static int cluster_remainder(BDRVParallelsState *s, in= t64_t sector_num, return MIN(nb_sectors, ret); } =20 +static uint32_t host_cluster_index(BDRVParallelsState *s, int64_t off) +{ + off -=3D le32_to_cpu(s->header->data_off) << BDRV_SECTOR_BITS; + return off / s->cluster_size; +} + static int64_t block_status(BDRVParallelsState *s, int64_t sector_num, int nb_sectors, int *pnum) { @@ -533,7 +539,6 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckRes= ult *res, { BDRVParallelsState *s =3D bs->opaque; int64_t count, leak_size; - int ret; =20 leak_size =3D parallels_get_leak_size(bs, res); if (leak_size < 0) { @@ -550,16 +555,127 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheck= Result *res, fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", leak_size); =20 if (fix & BDRV_FIX_LEAKS) { - ret =3D parallels_fix_leak(bs, res); - if (ret < 0) { - return ret; - } res->leaks_fixed +=3D count; } =20 return 0; } =20 +static int parallels_check_duplicate(BlockDriverState *bs, + BdrvCheckResult *res, + BdrvCheckMode *fix) +{ + BDRVParallelsState *s =3D bs->opaque; + QEMUIOVector qiov; + int64_t off, sector; + unsigned long *bitmap; + uint32_t i, bitmap_size, cluster_index; + int n, ret =3D 0; + uint64_t *buf =3D NULL; + + /* + * Create a bitmap of used clusters. + * If a bit is set, there is a BAT entry pointing to this cluster. + * Loop through the BAT entries, check bits relevant to an entry offse= t. + * If bit is set, this entry is duplicated. Otherwise set the bit. + * + * We shouldn't worry about newly allocated clusters outside the image + * because they are created higher then any existing cluster pointed by + * a BAT entry. + */ + bitmap_size =3D host_cluster_index(s, res->image_end_offset); + if (bitmap_size =3D=3D 0) { + return 0; + } + + bitmap =3D bitmap_new(bitmap_size); + + buf =3D qemu_memalign(4096, s->cluster_size); + qemu_iovec_init(&qiov, 0); + qemu_iovec_add(&qiov, buf, s->cluster_size); + + for (i =3D 0; i < s->bat_size; i++) { + off =3D bat2sect(s, i) << BDRV_SECTOR_BITS; + if (off =3D=3D 0) { + continue; + } + + cluster_index =3D host_cluster_index(s, off); + if (test_bit(cluster_index, bitmap)) { + /* this cluster duplicates another one */ + fprintf(stderr, + "%s duplicate offset in BAT entry %u\n", + *fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i); + + res->corruptions++; + + if (*fix & BDRV_FIX_ERRORS) { + /* + * Reset the entry and allocate a new cluster + * for the relevant guest offset. In this way we let + * the lower layer to place the new cluster properly. + * Copy the original cluster to the allocated one. + */ + parallels_set_bat_entry(s, i, 0); + + ret =3D bdrv_co_pread(bs->file, off, s->cluster_size, buf,= 0); + if (ret < 0) { + res->check_errors++; + goto out; + } + + sector =3D (i * (int64_t)s->cluster_size) >> BDRV_SECTOR_B= ITS; + sector =3D allocate_clusters(bs, sector, s->tracks, &n); + if (sector < 0) { + res->check_errors++; + ret =3D sector; + goto out; + } + off =3D sector << BDRV_SECTOR_BITS; + + ret =3D bdrv_co_pwritev(bs->file, off, s->cluster_size, &q= iov, 0); + if (ret < 0) { + res->check_errors++; + goto out; + } + + if (off + s->cluster_size > res->image_end_offset) { + res->image_end_offset =3D off + s->cluster_size; + } + + /* + * In the future allocate_cluster() will reuse holed offse= ts + * inside the image. Keep the used clusters bitmap content + * consistent for the new allocated clusters too. + * + * Note, clusters allocated outside the current image are = not + * considered, and the bitmap size doesn't change. + */ + cluster_index =3D host_cluster_index(s, off); + if (cluster_index < bitmap_size) { + bitmap_set(bitmap, cluster_index, 1); + } + + /* + * When new clusters are allocated, file size increases by + * 128 Mb blocks. We need to truncate the file to the right + * size. Let the leak fix code make its job. + */ + *fix |=3D BDRV_FIX_LEAKS; + res->corruptions_fixed++; + } + } else { + bitmap_set(bitmap, cluster_index, 1); + } + } + +out: + qemu_iovec_destroy(&qiov); + g_free(buf); + g_free(bitmap); + return ret; +} + static void parallels_collect_statistics(BlockDriverState *bs, BdrvCheckResult *res, BdrvCheckMode fix) @@ -611,7 +727,19 @@ parallels_co_check(BlockDriverState *bs, BdrvCheckResu= lt *res, return ret; } =20 + ret =3D parallels_check_duplicate(bs, res, &fix); + if (ret < 0) { + return ret; + } + parallels_collect_statistics(bs, res, fix); + + if (fix & BDRV_FIX_LEAKS) { + ret =3D parallels_fix_leak(bs, res); + if (ret < 0) { + return ret; + } + } } =20 ret =3D bdrv_co_flush(bs); --=20 2.34.1 From nobody Tue May 7 17:05:44 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1685373393; cv=pass; d=zohomail.com; s=zohoarc; b=GoeodSw0OvXVxqGhMcu1pWtGxx4b089jUKhqnrsfl1TU1BnexHIPbUlc5orcjXocSkFxX/uEzwcJybb8YopQShSoqhRek9zVQSeWhsqSxwGqAYVGhxVqfzikNOqKBXLwk5hdP4T+65uLuWpU59pW256WgxFes88f7A1rTsd8y8o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685373393; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6SRHt3tGMMReKpGwUTGS1ssKn3Nd0gDkK+rK5fsxfeo=; b=Qc2C79CZELrn2KfKn+zNDQcV5Uw8w4bpAylXIUN4H4NlgJQpvLm7YrRZgWsjfGYXqS3YnMPt8SsfZrQqic0zX2rzQJd3xvvxJcFt7joBjjQDA67kE0Fwz6pv7dVJgQexWBLfI6V6JT8Qg/XMFheKvlp+Cd9UYaOvoQWnje/s2Bc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1685373393554364.73596371032136; Mon, 29 May 2023 08:16:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q3eaw-0004Ac-22; Mon, 29 May 2023 11:15:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eaq-00048k-D7; Mon, 29 May 2023 11:15:34 -0400 Received: from mail-dbaeur03on20705.outbound.protection.outlook.com ([2a01:111:f400:fe1a::705] helo=EUR03-DBA-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eao-0003O3-GE; Mon, 29 May 2023 11:15:31 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by PAXPR08MB6382.eurprd08.prod.outlook.com (2603:10a6:102:15b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.21; Mon, 29 May 2023 15:15:13 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158%7]) with mapi id 15.20.6433.022; Mon, 29 May 2023 15:15:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UXvBWo0+m2WBeiyFH0nerKm+b/CF14CLdmOm9Qj2BcJUQumz0sPepRTbhp1zLQq9Ll3QNN8xgjX1HlCR2KoRBEul4XyaIkyMdDgvQZLXJgp2nMFnR+7wkBHOL0WGVH77BIscLsxIlFhYVAXgP6xqmpUc0GYD0WG8YjT5VoG6j/QqwCB/96xamG3kWvLIUKt6/Tv1pSb8mBDmhn8QXCDkP1GRQvG+l21E2czw+fl3fiXgAdYh+WqSsbSmT8VMZEh5GoL5cTsuHsa/KTwqdTGR5MJMB37c25ShQUjW24FN//H7RETkDMw5NZAqj+NJWaMGXEHQL7jKyDVtkigdcrd/DA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=6SRHt3tGMMReKpGwUTGS1ssKn3Nd0gDkK+rK5fsxfeo=; b=U8Js3s9VhRL4+nYnQAOrh8Vg4jxrXNhKvaeI3L/PxM8zQQ/z5ZnTmYYANtZkBMSwajpK4UjUFbBEOO/6yPQXCNlf5U24azQFvQtyNpp03AKfQMlSBr3onKScTLW+1EBIhDVJ0U+I9Rnvt42HUhUKjw7uxb3dIlDFMaVvSOL5r6K7pT2c3pXpBMoqwVbS8XlUqyOA6L7K8HA0f37PJmQhaNSfHJmF0Tns1cLVCXxpPEFVblTjQSIBfKxsPSIqRO6KsMdOvRmGFqvGWH5FZLAr5fWAJJT/SH5HTnz9cOnMo554mpHzBtL8ruUCkccxXBurrNnbMNQbNpiakV45yDYmHg== 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=6SRHt3tGMMReKpGwUTGS1ssKn3Nd0gDkK+rK5fsxfeo=; b=QZp2Q9osSgbTKtMeNaLK8CxJHbfXptOqW/DdI9NQHLW7w77FkU3Nknnjcv75b9J0VylMa89kEXg4xXS6GEY5HHVASaq7ZhD3KzuuiqLMQCs4BHUituGFnFCwShiAli2uIqTNn/d4KbqEUdaa2AJQZmFGRL4k/a7AArH7l6XdxLwVMIjvl2Zr2ncr00eQOEdqynmNqePSkoYlVlhN/0JbXWSQlHndklQ960fyDGMRMD02HUXm4xKdikX9DoqqQSYNOFCU6xMndsPRjoCtiwx1tQvGeaQ8YxbZpVcDJjhAuIg9WVCBluR5eWtbgRWjDhuU/BgcTWgc0v/Td5RAS9aHnw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v5 4/5] parallels: Replace fprintf by qemu_log in check Date: Mon, 29 May 2023 17:15:02 +0200 Message-Id: <20230529151503.34006-5-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> References: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1P190CA0041.EURP190.PROD.OUTLOOK.COM (2603:10a6:800:1bb::8) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|PAXPR08MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: c9d5f6bc-e52b-4ae0-0b9f-08db60578007 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FW5cn3spsZVAU1Mqt6WuUkta0UjzJxXVF3EPxCrbrMT/0O1KHVpk+v+L30v5yQ5CzAdSRGKz8r6eJWBjKnT1zyAOQq3bOEY/IaZFN9n7c5Iyw4nHm1H/4MPYcqagCWEHrRdixCK8uAxRoLr+f35lcXIkl8tp3RuDUAyTZpwClHTGjnpNPeajvfTResLq/ZmYuJeY3LBA3FV/snp9mhkRQ574UImhtENnKOgqjmPFCNMOon0A6AVMD835mJJfA9sBJJnQEjCN2eu1BofaSanXq1wxyj35241lUxGXFvb1s2+5KzfigN0oc80aOkgZRe1QIJWMGVFL4I70gzayFg9VMKjyPatjnw719ko26nRUExE+qoopV4u8CMJlRz8FCqj06W14Pz3jknQAHVjxIcznXy27VnmGkgn9MpxrYbcWGY/zQbM7v4xCJDErOB6PxG0jc0Dc/SGVhlGz1d8A76ed1JZBtRt8UiZTmt8WbN/54oAxIVZoxJNIt8xtxHw1UGpjk33QiIQj2zEzSDH+OodDk6uNq9ZlbztRuCdv3JJW4x9NZcd4Jst4q4AOZbyZn8vhGXwBNdhjcmaP2eWzCVvGxnINfp7HCqj1cqE34r6qZwhoE+pSOGJG71RIrrjqNklt X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(39850400004)(366004)(396003)(346002)(376002)(451199021)(6666004)(52116002)(6486002)(2616005)(83380400001)(6506007)(6512007)(36756003)(38350700002)(38100700002)(86362001)(1076003)(186003)(26005)(2906002)(4326008)(316002)(66556008)(66476007)(66946007)(6916009)(8936002)(8676002)(44832011)(5660300002)(41300700001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7NsktsYH99Sp0yJ8fqi+lKFzhlHtajTwlewZYqW6WuJKD36AF2jNAO3zxZE4?= =?us-ascii?Q?XKGqWdU/QdfajuWtA5QV8zL8JUsJN9rxUSNe3WwyFdWP5cEyPbK7FhbRireO?= =?us-ascii?Q?jGtnbNS4U9rp60LHiA8+2eMz4sVNQNXTJ5Y89PT0KXCXtqoihzLA04K3LYTR?= =?us-ascii?Q?z7k7JftRRaIvB4GACY7gqacDmjEBGL1eqzV9Mt5+0b+SS0HaYB8jTV/WWKM2?= =?us-ascii?Q?eCPpjxbSDqU4cUJGg29m7RmX/7GtE2b4lgAoDYLkgMD3I4Llg4LXi3DY0Ncw?= =?us-ascii?Q?2oM1qqCKFR76L20GZkoHIG+el42+GHvXhWGNnTGOVbtWqHeNaimORyfr84pj?= =?us-ascii?Q?zQxn5o10LB+Xu6jyvbqowRrfkJSg9PN4fUCVROrDKilb9R0Gd/R0VVQg8rd5?= =?us-ascii?Q?1bkqVDAUtgxvvd9P6KYZQgfsJJWw7QQIHnDYbrXvQ6rF/SjwuuFotcG5kuqz?= =?us-ascii?Q?QTDY4z5tGx7iGEn/SvaiPvCle1gMQtFhNOeZ7LyFYBrWSkG3Qm2m5BO/VBHq?= =?us-ascii?Q?jWd8GhrkDPAOUlbd6Q/XA+BcPYPqaP6Ou+D2gJOyV/w7j1sbQXC8vZadmUXI?= =?us-ascii?Q?uPn6sT5VA/vId15uzRDKCI0upJYYdiUTSusr6n6QTRca/Z9sGOAkw0+gFVBH?= =?us-ascii?Q?9EnjA10o9k6G3L+yCUtSa54GZtFDrXVLOL7sx3jBaMkURHdoJb8LEB2BPy/F?= =?us-ascii?Q?/Q4pMtKGb8cqEKmi/l1cC4tqbk9AwSowZGWXTIql+8h4pL/J8OxGG2376MlV?= =?us-ascii?Q?gxopOzTW8nQfS4upujGbAt7wYZVLoe/XDmd8l3uDiTn4UFtrZZYPRNhvRqGR?= =?us-ascii?Q?OKR2S72BTHmU3KkdUhA0+p1tWByl60/NiJY6PRKUzHSHRy4zWlyCPZTTPMBT?= =?us-ascii?Q?Ui3+aSBksRh985j+aLCjzxHZcgjRxG851x61oFdNVLqefPmZoxLdydziQgpW?= =?us-ascii?Q?76oIe6Q/S5463Gy3a+xZM6v2AAYsyPkHKr2udwnbuccO8Lz+ci8Oqg0xIxvG?= =?us-ascii?Q?N7pzm4oDC1SLjUeVjEKOfMTOBJdHeysWn65kcvxSXxzYBCzzkuUbBykgKMv2?= =?us-ascii?Q?8w30P+nrcR9VSAtUHkJXWRG6VAAp1cU5NqK3NHqVnGhjDLhf0KDcsAReBZia?= =?us-ascii?Q?gjNsAjMNpYm6pOhrhFnnpk/fu9GLfRravEUbqB2PSad/emJhT+UN/XWoeaBx?= =?us-ascii?Q?m/HjupzsaAE0XsXtC6RsUVyJ1Kb/KxiMImU+pL57lCBfrtRfDA43XD1ibpsa?= =?us-ascii?Q?qhqom2GSNeYDVA25IW62OaiakiVRMo77aiXhraU9KRE+o+5L9oY6UtOoDGnx?= =?us-ascii?Q?I2xrF3JWbiCH7NcAMz7sv2agiwGbZAWWxKJPK8aBXXYEcicr2T+hg4iXACr0?= =?us-ascii?Q?b0k6yjrK3RWhu5sI27i6k3KhprZ9gpSFIZ2ezTiHehh+XIlUlKUyU1uu9DYS?= =?us-ascii?Q?vBpQWi+MgUecrOeAf3h/twNz8eYnwE91NKwtQ8CBGuJqCwwNBqTJ0Dcd4SCA?= =?us-ascii?Q?N/6LjnJwZis5SiqJOwHDZF4gTOVw5k+asnLXm4uwQ0Mk83ervXEsFUmXsyqI?= =?us-ascii?Q?B2Rv0nyIkdIeGXDbKQ+vY8WAEpcnHMOtwzG6lNKZ/fZdfJEBe4yQEniP8ZUB?= =?us-ascii?Q?s5Ihfwi1e08okefpl685eZE=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9d5f6bc-e52b-4ae0-0b9f-08db60578007 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2023 15:15:13.0337 (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: ZBWaag/QexruH7V8f2ZV228xxIM6oD1AFpNervW34EYJCQ6kQEqDaHc1hF0MEoNVxprJ4zLvLgLPyIuXSAJvqWu5SLPJkq7d7Z7CG5+TT9c= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6382 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe1a::705; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR03-DBA-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1685373395083100007 Content-Type: text/plain; charset="utf-8" If the check is called during normal work, tracking of the check must be present in VM logs to have some clues if something going wrong with user's data. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev --- block/parallels.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 9fa1f93973..d64e8007d5 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -42,6 +42,7 @@ #include "qemu/bswap.h" #include "qemu/bitmap.h" #include "qemu/memalign.h" +#include "qemu/log-for-trace.h" #include "migration/blocker.h" #include "parallels.h" =20 @@ -436,8 +437,8 @@ static void parallels_check_unclean(BlockDriverState *b= s, return; } =20 - fprintf(stderr, "%s image was not closed correctly\n", - fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR"); + qemu_log("%s image was not closed correctly\n", + fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR"); res->corruptions++; if (fix & BDRV_FIX_ERRORS) { /* parallels_close will do the job right */ @@ -464,8 +465,8 @@ parallels_check_outside_image(BlockDriverState *bs, Bdr= vCheckResult *res, for (i =3D 0; i < s->bat_size; i++) { off =3D bat2sect(s, i) << BDRV_SECTOR_BITS; if (off + s->cluster_size > size) { - fprintf(stderr, "%s cluster %u is outside image\n", - fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i); + qemu_log("%s cluster %u is outside image\n", + fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i); res->corruptions++; if (fix & BDRV_FIX_ERRORS) { parallels_set_bat_entry(s, i, 0); @@ -551,8 +552,8 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckRes= ult *res, =20 count =3D DIV_ROUND_UP(leak_size, s->cluster_size); res->leaks +=3D count; - fprintf(stderr, "%s space leaked at the end of the image %" PRId64 "\n= ", - fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", leak_size); + qemu_log("%s space leaked at the end of the image %" PRId64 "\n", + fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", leak_size); =20 if (fix & BDRV_FIX_LEAKS) { res->leaks_fixed +=3D count; @@ -603,9 +604,8 @@ static int parallels_check_duplicate(BlockDriverState *= bs, cluster_index =3D host_cluster_index(s, off); if (test_bit(cluster_index, bitmap)) { /* this cluster duplicates another one */ - fprintf(stderr, - "%s duplicate offset in BAT entry %u\n", - *fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i); + qemu_log("%s duplicate offset in BAT entry %u\n", + *fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i); =20 res->corruptions++; =20 --=20 2.34.1 From nobody Tue May 7 17:05:44 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1685373392; cv=pass; d=zohomail.com; s=zohoarc; b=nkbBufzEyQ55LRaS9o6NpVj3+HmvXtmYKjQqerq+KUaDZvxu/me5Ko0aHW9cpgi4IOI3oD8UeLSktQN/Km5Ezqj4HYwyRO9z1H079JYw9M/RsgmvBEcEq79RQZq1LPK1Js/tgG0ryEbdXyv/109Q3fAKoTShxqa3FACXlHjbna0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685373392; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ydCkkdXq49ezaM/UTeKBcbJgEmjvmlkPL6d5TleG+40=; b=kbhEiW+YqJiN+L50VCmz7GTQPbl6nb0LVhf1Cs22bDi2FrTYMCuNwwk1MmdAM2oFhdU/BojBJx8/SySm956uHK7o1HIPpSCdNZa51W0MwqFUWNtCY0T4A16wU7i0bMsq1yCLWXIO3/IhVo4pGzi6qSP/1fBEXlnUsC49iYsR4JE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16853733926691009.9735752549792; Mon, 29 May 2023 08:16:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q3eaz-0004CP-HU; Mon, 29 May 2023 11:15:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3eas-00049O-JE; Mon, 29 May 2023 11:15:36 -0400 Received: from mail-dbaeur03on20705.outbound.protection.outlook.com ([2a01:111:f400:fe1a::705] helo=EUR03-DBA-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q3ear-0003O3-1d; Mon, 29 May 2023 11:15:34 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by PAXPR08MB6382.eurprd08.prod.outlook.com (2603:10a6:102:15b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.21; Mon, 29 May 2023 15:15:13 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::b630:c4eb:fba3:1158%7]) with mapi id 15.20.6433.022; Mon, 29 May 2023 15:15:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XmW7cUTP4RTWzdh2fQC6JHX6EcM/U47D8hfO43iB3ejDAA//hI+M1KuIE97SRD2fgWTZmg/FuUmwVIuH4MzjC0juL3Zgpar8UoRA/ydQKYNAAHTtCoC9Ejbco5cJdIswgu/+9iF2QqnZa0tOL4tNw7YBo5eS19doJhpknTTVk9qgH0L3Q9+kQee9Ht5sZluZQwzyQ6W8lke6BotkiYl3JOPlmlQWdvYdAJ1QzDXaEUYT1q8/RFZzaoYB/cY2lbcqcNRl56PTmXS/bd70i0lNTOvBMuADY+o4h7Z4CmgQrRQWif7T1XnFlGjE3Y9HXseQrSocO0Ls3JkQ4b7hI3BHew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=ydCkkdXq49ezaM/UTeKBcbJgEmjvmlkPL6d5TleG+40=; b=IdRiwwHBoga39OLMFP7FOvkatcS1TWuj0sSMRL1V0m457AB5Ms2sfGkvYvfkpxWUbWJyGHYf+rsv0XrJmIlcSJ46309kRtLO3Al8xwVubwklw3nkqtEp7rW8bzFsYqs4T9kDieqrVequdyu9/+gLlJMj895cqvC59MPSV18GkBlCRhANP5Nm3fjaPPAFKYGK1G+bH0kE518A29gN5WE1kf5NfESSAW0JuoYBZhvL9bJHFogKoWNYM7/+hOl+Cm4ihxAnxKVOxKQyiR07x6jA9QxKJlgzmX2SXCoFBtIvoOrzdpMdBgM33ImWg82+tA3+jI9vq7nMOvgAFXJ4hWVebA== 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=ydCkkdXq49ezaM/UTeKBcbJgEmjvmlkPL6d5TleG+40=; b=TBsh9RyxqiRkpcH1eH/F2TVWWt0zyZslf2Eise7GfD3bp9tJIwK44oxHz90yIIu/ZibPmac7tkp4ldIGaECHaC0IdMtH9tV+2tyfpBbJRjHXVRVDsAmrWrjkZyUka4w251bLiuBM6W4a3k7CaHM+5tRv4hRmPD1uVvMe7KAF8zprRr+P+z5vn9GxLUMfu+mby2Xbvzbft7vgTBuwJzvjC8oEw06ytmkQt14Ns3HHjRtFz1rsMjHW1ga2mSAwL9SrsLVT4tc4xVRhkuBV8ygpfIFlU5xnnwWuWsuIvJhXVrY5C9sFLtY7AskjtHB6myvtV9IyhUQExm+VajtWK/daPg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v5 5/5] parallels: Image repairing in parallels_open() Date: Mon, 29 May 2023 17:15:03 +0200 Message-Id: <20230529151503.34006-6-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> References: <20230529151503.34006-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1P190CA0041.EURP190.PROD.OUTLOOK.COM (2603:10a6:800:1bb::8) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|PAXPR08MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: d08c89da-e3de-4463-1521-08db60578058 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ++2pIJkdHx47HAKUkTJ52OBOzuaDh3XuvTLb4tDoO2g8OTPFOH3xr1BpjqfxhmJCC0dcpbJTZoRguGZ4QNmLTD/FxbDuuMgTwq85s9S42xWY8oPeSMiSN+NXieEvO+6k9O18NFMozgZlhmQf8n1g+y0e+H0XUIw4KmzMp3rzy9ma4Q3epuYhlfai17DdpBKZcyqN/JBfC2uvAMRDfuA3BvkoVhQatdJnPSKpw9BybxwFfiaUAidGeSmTyjJiL2zn3jTD7puP8o64b0qHHBAvqU8u7qEAYwIuTbdYrMvvipabJwlElmS3nDBWdOyqQZfu5Ydc9SyDm8PWki1Wq0FX4kfWsCv+m3Kt6QsC33UDh0gPfDqxPiIKm1YBMYIYSVfjoYFhT4Ngm7LTWLJIWswAJmWTpiF5CJeeVY5DoAaoNkNlDpql81ZIJuv/RdNswAfc8H+nzeAYG6FvWypz0slD9nhLIswlf/CPD/g5YZVO5gXuymvTXnKvSwrLUmfzjGvfLtrDuGgAKTAgqos22ADmcICglPV/o7aGlPQ6gfUiySpaCtvP3aM1QGWu40nsKLb1z0/eUNnBTFrHX+cLIVNvqjoCctVlBE5PBbip0J22n1zg/x7FO7jsOrLD+aKNj9yA X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(39850400004)(366004)(396003)(346002)(376002)(451199021)(6666004)(52116002)(6486002)(2616005)(83380400001)(6506007)(6512007)(36756003)(38350700002)(38100700002)(86362001)(1076003)(186003)(26005)(2906002)(4326008)(316002)(66556008)(66476007)(66946007)(6916009)(8936002)(8676002)(44832011)(5660300002)(41300700001)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IF1c9ZK9/94sOQ976tef4HAANkPfZkRyFJmy/njKT/FbyilJfybgocLBqppv?= =?us-ascii?Q?N0ByCdBLBdWRFfK9eADJOcgNCAFDE1SnIBkTwGnI9KrFzwP0eAA/7xEpv6qp?= =?us-ascii?Q?2VsLYCoxsiHC0Av4Zy5CGNfHOXQ0Mqykj0CZGCd46W1V+4MwSqJvCJa/U794?= =?us-ascii?Q?FqSJVMH7cyijRZJjtXaJaFf+42NBHaYzi9gJjgCvuXewrHZ5doFF7WIvTyOC?= =?us-ascii?Q?KFlhDIW5pA2l6RmUMHtDYzI/8vtr4zl3FXld/RxhGMbbtJv/4pBJ/SOdeNMN?= =?us-ascii?Q?rDgN/2mrx3k4e9T+ULCMvT5rOn4CJswSffy4eio/W+fjEmPwR1imJEVu7x/I?= =?us-ascii?Q?EysIp6SUblGmVpo/YefWBpt4EPpGg9iUxKO0R7l2Ckhhyjlv6EwYvNIfGMdI?= =?us-ascii?Q?sn3Jj3gj9i65CFkYg2iWOimulTsWbnhrvE3MLylpeYG6OluLlOYSq4qlv5bQ?= =?us-ascii?Q?gC47sJwnXLG27wJqLCdlrhKWHlmzU9cOpp1m4mCjvHCxdoEavgE+EQMKlKAu?= =?us-ascii?Q?7RnigyIatc3mm2HT2By1V0Sb/FgYW7cUMsNPdYWNZCpq7CFWqMROW99w72qj?= =?us-ascii?Q?5hS3va9LZl3aHwKbapOVT0fhTZJ8A9n4nM2ZNHkc4N2upjgtLzZBjRBhNX2f?= =?us-ascii?Q?gpw+5v/WZNVLoV2aCF0PzLAhFISzXpjkXiS9v0UaIeHyh+MCMro6lBV9DzdZ?= =?us-ascii?Q?vXQg3PBZcslSuACGUg99EC7a6Rx7y63bDINEkMbYIbdpk18lCrR+hu1FqJn2?= =?us-ascii?Q?473UIcy3hFIkrM6PlNAn6F6Zs1v/HOS5Y8fRxEVaB0WyY6B1dixuOtmkZmk+?= =?us-ascii?Q?hV4C/rbQ9lgbeB6749K5kKE9o5OuwJJKqmyCuwcIZ4COzX2V0h9YrKYFBau1?= =?us-ascii?Q?NqxlTy/4IojEelzJO1Ua7Z/a+VUTyWEbCI4gz/IFAe7Av/g4Yargn5uS4/ey?= =?us-ascii?Q?M67kxodEZoKsk7ABpI5/lpesHf5UbxagzIogLEg1G4M5O9vMlFOdMPFqXcyH?= =?us-ascii?Q?m83VIi+uljTiFxyknmmcmZ4Uyb5q3qBwSayHecfx8myHpm1vsYDdOP4g6MDb?= =?us-ascii?Q?lRRXVfLCuoWQcxXbVd59IrVuxSyXsR9JDzXeRAzOVok2Od4wbbL1y76/V0nt?= =?us-ascii?Q?Q0bhG/nNiguHs14TJL12dOEIW8e4Zk6y42ZINJTskmJioAKFIO0erwhJmS6m?= =?us-ascii?Q?TYGyug0Vpqque0Bs4qgcxKwt0zRlab92IDE3KsgK1ronFM2uGm1mlkC8kA5z?= =?us-ascii?Q?cMdOhYjJqZCdPG6efNvkCabIgLFgaQLmuMk9vFbVdLCL9qYZizqugTZP+MX5?= =?us-ascii?Q?Whmy5rWIIjnYs1gfHQ3GT4DAHTqGSvi2pV7P2yg4Orq9gr1ocANIHIQ+kxJu?= =?us-ascii?Q?pnLMvNUOF/4SsHUcWTlBbnbaI2H7d6ZAnyk8ZpQZQKcxLNOxiZWhcezmCIA7?= =?us-ascii?Q?ClQQpjaZXd18+ktykJEEU+j012mpOmB6dk2Eu0pwOsQAzoeuuLWW5QNNU9dj?= =?us-ascii?Q?W1WJszCkfcp70EOpwVLFrwBrWgdbYXC69i8JXao27hDzAGthajJJBKKVjYUr?= =?us-ascii?Q?m6VZCNLNOyhSmyb9Vy6QzxPz19eJdFxFRANbU4zjc+e37FwVrSgvuq+cpwhU?= =?us-ascii?Q?zrvJaQ2P0dnJToZ049Km0Kg=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d08c89da-e3de-4463-1521-08db60578058 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2023 15:15:13.6175 (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: 09cXS0FEHGvM/U/11bjk2Cza4b7Adh8V4encCLDEzb9zZKSWvCPJ/YypgJwTqIuSBdMgMQqKqg4H/yaNRdjLPcdaRjEi6oQJzGGGrzCF9D8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6382 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe1a::705; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR03-DBA-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1685373393154100001 Content-Type: text/plain; charset="utf-8" Repair an image at opening if the image is unclean or out-of-image corruption was detected. Signed-off-by: Alexander Ivanov Reviewed-by: Hanna Czenczek --- block/parallels.c | 65 +++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index d64e8007d5..7bbd5cb112 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -962,7 +962,7 @@ static int parallels_open(BlockDriverState *bs, QDict *= options, int flags, BDRVParallelsState *s =3D bs->opaque; ParallelsHeader ph; int ret, size, i; - int64_t file_nb_sectors; + int64_t file_nb_sectors, sector; QemuOpts *opts =3D NULL; Error *local_err =3D NULL; char *buf; @@ -1039,35 +1039,6 @@ static int parallels_open(BlockDriverState *bs, QDic= t *options, int flags, } s->bat_bitmap =3D (uint32_t *)(s->header + 1); =20 - for (i =3D 0; i < s->bat_size; i++) { - int64_t off =3D bat2sect(s, i); - if (off >=3D file_nb_sectors) { - if (flags & BDRV_O_CHECK) { - continue; - } - error_setg(errp, "parallels: Offset %" PRIi64 " in BAT[%d] ent= ry " - "is larger than file size (%" PRIi64 ")", - off << BDRV_SECTOR_BITS, i, - file_nb_sectors << BDRV_SECTOR_BITS); - ret =3D -EINVAL; - goto fail; - } - if (off >=3D s->data_end) { - s->data_end =3D off + s->tracks; - } - } - - if (le32_to_cpu(ph.inuse) =3D=3D HEADER_INUSE_MAGIC) { - /* Image was not closed correctly. The check is mandatory */ - s->header_unclean =3D true; - if ((flags & BDRV_O_RDWR) && !(flags & BDRV_O_CHECK)) { - error_setg(errp, "parallels: Image was not closed correctly; " - "cannot be opened read/write"); - ret =3D -EACCES; - goto fail; - } - } - opts =3D qemu_opts_create(¶llels_runtime_opts, NULL, 0, errp); if (!opts) { goto fail_options; @@ -1130,6 +1101,40 @@ static int parallels_open(BlockDriverState *bs, QDic= t *options, int flags, goto fail; } qemu_co_mutex_init(&s->lock); + + if (le32_to_cpu(ph.inuse) =3D=3D HEADER_INUSE_MAGIC) { + s->header_unclean =3D true; + } + + for (i =3D 0; i < s->bat_size; i++) { + sector =3D bat2sect(s, i); + if (sector + s->tracks > s->data_end) { + s->data_end =3D sector + s->tracks; + } + } + + /* + * We don't repair the image here if it's opened for checks. Also we d= on't + * want to change inactive images and can't change readonly images. + */ + if ((flags & (BDRV_O_CHECK | BDRV_O_INACTIVE)) || !(flags & BDRV_O_RDW= R)) { + return 0; + } + + /* + * Repair the image if it's dirty or + * out-of-image corruption was detected. + */ + if (s->data_end > file_nb_sectors || s->header_unclean) { + BdrvCheckResult res; + ret =3D bdrv_check(bs, &res, BDRV_FIX_ERRORS | BDRV_FIX_LEAKS); + if (ret < 0) { + error_free(s->migration_blocker); + error_setg_errno(errp, -ret, "Could not repair corrupted image= "); + goto fail; + } + } + return 0; =20 fail_format: --=20 2.34.1