From nobody Sat May 18 11:46:55 2024 Delivered-To: importer@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+importer=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=1687335719; cv=pass; d=zohomail.com; s=zohoarc; b=VrEwAMeDBv1QFoFrcFirQ1ud/SV7t6w7GhFUSkXwa39aCxdRicLI6pKXtcl2m4VFIkow5UgNZJOSOrQjm9/qQ3nowlINetkX6dqn9+UJWV9ouZunCwTyFFhegDA75KBrG6a6PAHdIEJWBzeIz9D0j/LcawcTDJu7Z/CGDzvNUHc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687335719; 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=digeMjfk7f9RMrOtkSaCGKZ/ON4DSNbpxzOK8YoV5uU=; b=nykfxiyV0O2XeQUHZ5Nzb5aR4zWtmIILVHE1vXdqo8Bu2w2/EPEdK55JE/CAsYfnRUBmqi9ZC2gJrCziz/czsr7klAfB+YNGBmxD6pudjoKbqzzpa7graVF3DpD6BLgdjNFnHS79QOsi0RYZ0mJYzoaE/sZxoI8an3DtZlVAbCo= 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+importer=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 1687335719676189.0089620019752; Wed, 21 Jun 2023 01:21:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBt4r-0000GG-EZ; Wed, 21 Jun 2023 04:20:33 -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 1qBt4m-0000EI-FW; Wed, 21 Jun 2023 04:20:28 -0400 Received: from mail-he1eur04on0726.outbound.protection.outlook.com ([2a01:111:f400:fe0d::726] helo=EUR04-HE1-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 1qBt4k-0007B8-5M; Wed, 21 Jun 2023 04:20:28 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by DU0PR08MB8422.eurprd08.prod.outlook.com (2603:10a6:10:406::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.37; Wed, 21 Jun 2023 08:20:19 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6500.036; Wed, 21 Jun 2023 08:20:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ec6JycOOu2LAhyyRciNIWCZ+cbjTSQaveN3lIX1WSHJFjP2NxTqNQ/FA6tUZtXehDYkguejjwwVpcKrP2QkJ89gt0f4JeBGHqDTTv7m7EBC+2gm8p+8XkmpU041mEBDVmtBOI/N73lnDIaBlTq4AA0khQyzxVgfxGIgthhuyrqUSVb4UVPO0QiEeo9hdzHXr6EWXkz27ySKwWi5KBd9+CWWig7E/aMvtCFHT4hEbigX0/AnbClcmUIMKhEgGMZz9vlCTMFBvaBQj3ljKLd68PgggZTgnC1clLn17BPpdrAy3MzN//a0biKDjKUh0lvfUz4+gbUrzLgLpz2+Q3eZbtA== 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=digeMjfk7f9RMrOtkSaCGKZ/ON4DSNbpxzOK8YoV5uU=; b=ErQuJVRRNmM6X9/BSAMwk6rsqnykZ0CYJ9rZKkcFQOTopCy8diQFrdIn+uBvYT2b8svPDUimRCDDMphka/O0VJI+Z64itWEdhEGG/8vvg5r6FpS6VXKqdY+RZExKhe+Jko/juS6LJbBU3OWX4dyFf/ypEV4VmVKvnZ0z+hXMev4pxj/fKFBfpej5HPsNl7UHKaH6g2kkLoj+Jh1iy8D63TTZHFIBY4i1YRg8ZU4vEbS8qWsqLP3Gj+UP+OvoUakPMjXbOh75/IV3wTHyYVOqOjlYx9zUjEmFrsO1C/9+XxNSzih1I35E6iLfH6qZsoc7o9zaxa0I+Hw+3JlHF9suRg== 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=digeMjfk7f9RMrOtkSaCGKZ/ON4DSNbpxzOK8YoV5uU=; b=KP5MXQvT9at1VMxrdPTEelx3Jf93iBugCYLoVK4NHiPS5Lyn4kNiRiZSu3ZsqR/+1Hj9EBfincijriuyIUda8oKqpAvEqtwaCVV+MZvAyOoW0udNAMf1vtgkrwYo+zkN1CY9fK7WpCbpu6dGafn7ahY8vCNNwPRJHoePJ6+Puz41yJm/4id638NmfNbczjwY/uWdGt9CIZmxdqtU00yW4KtTFMhWOCK9+qCQM5eONoJISMs0iVShockVmj7+x7LcrXT+uTRGkH+1AAcdPcP3qEgpBoxjQ8jd7G88ZYK7DwtasYYDa5EijLGJrUAwP5qo4nKchQ68I5hH6UI50uwfvQ== 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 v6 1/5] parallels: Incorrect data end calculation in parallels_open() Date: Wed, 21 Jun 2023 10:20:06 +0200 Message-Id: <20230621082010.139195-2-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> References: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR08CA0165.eurprd08.prod.outlook.com (2603:10a6:800:d1::19) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|DU0PR08MB8422:EE_ X-MS-Office365-Filtering-Correlation-Id: b7ebb924-9069-438f-936f-08db72305980 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JFN8Hnu8lB4058FTM8WIl4l3y54b5DwlKnQLdRkGAkuGw6rndIIW5CK8itRvFXwARBBLoP2/NvQuJpP9RIKFgcYwnm4p5j9Wfcvl/PO9bmSC4tZYsB8YpBPLC6CGHmH4sXOQq0zqRALVq/JSbye4F14r3qYisJP38RtgQ06nCDiNTRspoA/Ps5GjxbeCoIzTuuRF3kHEmTttyUikKI682XF+RBIxDUS4ni2SjHyQMCmVDkIM+kMVT54OdcxsqvQaqzPro7Rg5c3ggTtXRYJBI0zOXSVYTSrc/HFbMc2iR0pbiCHjOR/4FBh8e3Kwcbk+vavANxzZvLXbPMHirRwObKh205dWiwnEMQHpAqNute9YHbTSetBkU4EUst6B9k2znm2XPGZLYwbWg7q1cp/2/ihkuNTzCf1bMGw+7Yt7OZDlS9d7xqZNr6ldq2i2dHeYqlw8t3P9AO2IR2/sW+voh57/3lx3zOhXTQ3t84jPHOksKqPvGKZpMq9wKHAmC9ZMWVvDFRbUq/HO3Akqvnk/n3neoHY4jHbMT91KtZxdj+pKlnL6/WuBNn7UcuAFv7CF4C1GlnF0wOPlKh/qOczsPeVWddaawOyGpezjwc1m3VukL6Dt/1eXx4jWz6v/kpF1 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)(376002)(346002)(39850400004)(396003)(366004)(136003)(451199021)(66946007)(44832011)(5660300002)(86362001)(2616005)(8936002)(8676002)(1076003)(26005)(6666004)(186003)(6486002)(36756003)(6512007)(6506007)(52116002)(2906002)(478600001)(83380400001)(38350700002)(4326008)(66556008)(316002)(6916009)(66476007)(38100700002)(41300700001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lIsKLr0psYIjOz6OFNVjINhmaam/cMKje4JZdmlyGsIGPBDjqD/e+RYgGUzy?= =?us-ascii?Q?w2zY3ZaCzV7nW/iicYrSbn3kd/7pKruTFfwjhH08hjXbSllMofXygAG9ZbR/?= =?us-ascii?Q?vtEne4/whqd6EljnHJ2JjU+ID6bWCaNhAFyR2JtRNwSMf2vf5WstmmqguOnN?= =?us-ascii?Q?3yRegBQgNQlDyiWockXtOinHkHjgwLIBL01Iev51+oCqnTq8qSllwT5Hfvnj?= =?us-ascii?Q?C3LvfQB7hem03ExBHKEdt8IYlNLfpJCLcgdWina6LBiv+uCNzqI/1BL6rjlL?= =?us-ascii?Q?UfJB+PECIvx3DZllpktxBeQ0ytAQ2DoVjmPOR3mlCPB0BbcN3UeeGv71Fuk0?= =?us-ascii?Q?qK+SQEWAd45CYEEN9DwkrCH/M/bNmfF+dE0V0fy+ziVg7rZ951GLCaFGpe9s?= =?us-ascii?Q?FhZusahTbECOikjhmT/VRPT/+7kL/yFPzRPF01KNrU2jPjUm2Hfx6YoLg+Ei?= =?us-ascii?Q?xRGHhR7fMDrZPnO5S7rVxk3eakQDearAJcAJOMPWvMm0WTt05jH/yhfeZB5r?= =?us-ascii?Q?5Flr5X+X4WFjgs6jKo01cDZDoX8N18z4Y3EjdPJ+nM5AWXUgsPZ9oG2xFRC5?= =?us-ascii?Q?Ig76xhnbQeRETRQvk3wUgCBMDT17cQF2mhyRaBB0GPGuvwOmrUZHCMF9pw2R?= =?us-ascii?Q?FW3PGgH3OT/ggIYVyV7PuQ3e3+XVEWGhOPvJdw+RqfOfpl25FIEjDkEDssy5?= =?us-ascii?Q?3m+HzOh0y0y0VsuYifp9DNnV1cKNUo5mbiFR87M+5JbvAK9nUJca6gxVxyYx?= =?us-ascii?Q?St7RiJn0zTAupL30TvftAJIBuxmn6emF+oIwJ2cwkVdXe83PJQGSW04jRJTN?= =?us-ascii?Q?YYCjAJ6W0E5LLj2zK/LzUb3HTYbfkX7MVqYGUjmRnSiKzuD+ZTzC4QH7g5ln?= =?us-ascii?Q?+VZ4BGza8KlIQEUB12zg9rrnbcFbTy3WpyzZcV7GchJ72ovcw1pZRFE8SkTQ?= =?us-ascii?Q?Ae4/3+x5GGBxUhrz6q7dQpPdcBfzB97YaNsF42O51EszbaCbpXqRI0CyMtdL?= =?us-ascii?Q?VMc2OcEBovdrRim2vidnPhDR6FcttZzlYkm6R5l3X/jsMWHzsZYWyASD2hK2?= =?us-ascii?Q?hqC8SAFATjYdj8p4BZ8O+Ju0S++1E6GFL4MK2tJ8UqgtK45kDneXaruiM9Tf?= =?us-ascii?Q?bMkYoI3QrBy2P0/0BI5X8v/YKrv/mRDB62E7EW4MI8XwhckKoI/4i64xo0ch?= =?us-ascii?Q?qrBvR4ZjL9a45oFjNNTillgadSJiM1CzxMM544RqOYNqKnA6fArJm6gJ4fFT?= =?us-ascii?Q?3JKZHMav/e+zTfwQn2em5lkxBfYWOfoXzq3jL0r6NMmxPBB49um/onlTrRxc?= =?us-ascii?Q?5oszGbUpSoJZhQ/6z4dBf912Sk3+jPM1ERIaROzWBqPB6XADC4Slvvpgz20j?= =?us-ascii?Q?P1wlcFSRSpgsxaxRf5a9yiYmIz3zXVUgm4epwkhVUrouXYD1cD52o9pP5aP0?= =?us-ascii?Q?TMiFL33JHb6Gva05gnF2WdHCx3p7MA3gI7gJ9V19a2LHI+stibsi0aFe4sbg?= =?us-ascii?Q?b0BbqCO+67ZADy2UTHiPAGX8TGDB8Vhz588H55mqR/iO9k8qtxQ/gGWqaIBb?= =?us-ascii?Q?CEXE9xAd0GRKhF/9XxHLe+35EbqIMAuKSA0TZl1V/ONsk4hdVuP4fZVctuVA?= =?us-ascii?Q?s4wfwpRehMmBrrEHjg4wTxQ=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7ebb924-9069-438f-936f-08db72305980 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2023 08:20:18.9819 (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: FCffcfk1j3N7Byp6mQZGsNLZXqgAW/EF3sBGeAZCxAFj8VbjKvzwB6cmsoLl3VdKOFjXWlxaXk2t4O0PY643Rr7oh+mnTiMcKCRaIybD968= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8422 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe0d::726; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-HE1-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1687335720601100009 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 Sat May 18 11:46:55 2024 Delivered-To: importer@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+importer=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=1687335726; cv=pass; d=zohomail.com; s=zohoarc; b=dYXRzhe9mlG6vE/vpzUZVg+aSzqD38JxZowx5qDQVDrtSSAbZ83DWcUyzsk+zy82zTkb2BayvbED9Yv1RHMx85kqXy1Vkj3+jUuh1kyB0fiigyc240De191Kpvgz6Hmuzl8mfEufIyA16OVMfuU9tcq8pNzCtiIgQLCc4tHlVkk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687335726; 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=RRJpf7twJJc5P6zwdiBJeQBXlzslnqjgsxls1aebyY8=; b=K9iC6btsWaYUQMPgIKVwtYuLrIuaadHXRrug4jum1N5qrbJJ52e8YOUAWg+kkzLZyMeUMXZSwVmnZA967HRdmKEuGeMPlvv+4BD7lt/JWsHGC3hwOXYzB39QYZ0DxQNlZwrKBzaiVoDY2tcc+phXDJ8SHgNcDRUeXbK8eJQJhwE= 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+importer=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 1687335726317786.3452452818283; Wed, 21 Jun 2023 01:22:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBt4t-0000Kg-CC; Wed, 21 Jun 2023 04:20:35 -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 1qBt4o-0000Gg-Rh; Wed, 21 Jun 2023 04:20:33 -0400 Received: from mail-he1eur04on0726.outbound.protection.outlook.com ([2a01:111:f400:fe0d::726] helo=EUR04-HE1-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 1qBt4n-0007B8-A0; Wed, 21 Jun 2023 04:20:30 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by DU0PR08MB8422.eurprd08.prod.outlook.com (2603:10a6:10:406::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.37; Wed, 21 Jun 2023 08:20:19 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6500.036; Wed, 21 Jun 2023 08:20:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qck5+GWq0Zj2TJkGqTh0ACx3n0vAfs71tQuRfd19Q/vCmpszc/usDlsxn3v1GsmA5nIV+vK82toRRMGawns2KwxLft/WkK0qQ9wxXE+tPJQ6/R4ILuF9GK5zmI9i996A/ayA+Bjnc9CJuau4sRUPSiqKrfMxuhIDcvrXM6gV8HNhZzoGA8/J//Ef+b7uFUNWl/BpyRNLFQ/fVcVcj4zlOz8D5eClX/uSwD4UmY6IVWigZ44upuNXM014+zFwG6l02/O8ff9H2AAjM7U3YxD/LcA4U8pXan5FpPKGB+IaGrTqKL62gblp5tmO/7ayTEyKQAUsD4LvEezhf8C/exG0Ug== 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=RRJpf7twJJc5P6zwdiBJeQBXlzslnqjgsxls1aebyY8=; b=VeijWeEv9OmQU0xJQ7kSEi0Uzr+Hylvs63mbufhLOM6tC46/EkOH7yFN9sirr/GVp0HjGhnW792hjb/gR+EnWWbBPLTg8vCqVbH+JNsMt/ThfoZM+zK8wmQC3j8ED8+zmErMVxSTXJFGy8+qBKCz9IBhWt4w6r5IQ5lA3DXJazosSr/DXl2q4GhP/2aGyf+mcDBlqOdLdn3KN77yPVjq9lHXhXN1f7g4wkHmHPThou/55zR7826OL9mv99vrdmajVlTKTvbzPSgQKViyxvhvaajcMudGMBai0iFEMlJPrBUbzgrTGq+aF+XGBme5tOVjqiNaL5us7AfHuKIVHKnvvQ== 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=RRJpf7twJJc5P6zwdiBJeQBXlzslnqjgsxls1aebyY8=; b=SaC/3DilZ+AFWOt0FMIjD0mq9nI5ER3qi7ZXTCsgeZe0mWZNwNJCbjTZquQ13HQH8Wj1WlvJ4WGvJrt1V+puFJOsz3W2grVsXLgpc5+OZnmEtKUeGa9GkZlwLT+b2MgosmCYnYAIBOqcRSjNZXXGdFAU/gc/slqm/Yt/fnY6Q7RL8LBDsxdSOKrjd41pqgqBjTXFej5HkGHxTEcnVK/GQ8zZEroQoOM09GezV6YwPWsA2wJflTyiS2JndpIzcs1wsv45/BaLidZqKCrqsXIBqSPs33zdBpVhPyYawmWkIEkfZ0J5+lwe0UOiwJUQoSTZ8NV1zTaxBPSlCsQ38uIFHw== 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 v6 2/5] parallels: Check if data_end greater than the file size Date: Wed, 21 Jun 2023 10:20:07 +0200 Message-Id: <20230621082010.139195-3-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> References: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR08CA0165.eurprd08.prod.outlook.com (2603:10a6:800:d1::19) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|DU0PR08MB8422:EE_ X-MS-Office365-Filtering-Correlation-Id: 83c9daf9-bba4-4a97-c670-08db723059d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W8lwa46DB6OaDNDZ7mlpmvZIuodmlSvTqK/8CkXHfouedh3qekvZV6oGQKOPd4pJjvGWxPsggWEumoFec8am38EFvY9bYSywZaL5h/MV4w+IMODqugjLvNiAm1Yg1aLANDf2C/onRShrBx9S48n+reGIrhgkK0/J/C1BEhD6n3Q6JrQqFyBzWJYNAYtxCJoxAYXEmnZDpKcqksxcAyrdyJYCHaqboKqqoZkJwcskJgJwNwBoOLc6pHRAX4Mb4ZYZzrIs7xMR4uz/wJFfCK7f+U9/5nOku62SzcglIs5uO8oqAUrbrkTPj52DWoBEZjUbi2yQpfeHnpXfQgHheTBzch5pyjB0Ojp/q+J1RmiZNJjY2NSWkhy7hmuWVn64AFZ5FG/4Dy1HJPZ2nUI1FWWk8RSs+afYEc18yKfrrFY9eCuC1DjevCu4pQ2xFE4N1PxWwR9zyis9cDHVPbHAEsK3qODc6oIupIbE3UdBl5bsn0YTECvqTHOH12qHq6Bg2E02aEhBpc10SOH89MRTTinyM28SI5QKHxzCAlEndTSC5wHfQ/pw3FNnQHO6gUMjhdxOkmZo9CxeD08B63GkGDufTPt6fP4JAwn3c98ud4dLcSFs8Nrt0wVSB4/mv/rPKkWo 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)(376002)(346002)(39850400004)(396003)(366004)(136003)(451199021)(66946007)(44832011)(5660300002)(86362001)(2616005)(8936002)(8676002)(1076003)(26005)(6666004)(186003)(6486002)(36756003)(6512007)(6506007)(52116002)(2906002)(478600001)(4744005)(83380400001)(38350700002)(4326008)(66556008)(316002)(6916009)(66476007)(38100700002)(41300700001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tqwHvFIuwfdKe1QwA3fkCRT3gw3YR/9Y8BcrOqbMtVCj5swdJKgYE469KY0L?= =?us-ascii?Q?e2xxx/Dc69f3XQ+jxhiA6ctg/jyT0uMTm47uSsxx2dTgrCPc9PMAQUac77+W?= =?us-ascii?Q?HjuZVfqL3k5vDE2RdDN9gMSLQX3uM4qpBEU08UKcxQD8yvpoVBX4ywv3QjIW?= =?us-ascii?Q?1mKxee4SJjomS5eIo15eq5Q5VbrlCc0W4/shkONDWEIzrfOQapCUlDqz6pKT?= =?us-ascii?Q?gW8ULji7rlqU843Ojoi6uJJny06tWsGEcZKv8ALfKhGfEAesKAd4cQgkwOKX?= =?us-ascii?Q?DwE+Fr/q5s/thFG/WYx9V/QocGO03Hx9bH9z4VGB+HbouTRoh0DOTcjOBwFK?= =?us-ascii?Q?0qS/Gg3imv4fs9WFaSw6HYG1tK8IIaaB3YBaTGPUapKtgeBF+CJsii3UUAo4?= =?us-ascii?Q?KVCRsw0xOKSREOsEDFjSsPRYRj32kqSVERKufFMgKgbMGsnOBqu1eN2rG1X+?= =?us-ascii?Q?hXB+XYaWdXwIF0QxqT4LjJLGXL9pWLRLIfkhkWdAbKsp/DFfAu8lYgD/vnV+?= =?us-ascii?Q?G+HwoUBKKZrwE1szxJ7T5iY83xEs9cIZROd2x8q1z0adZ5I8fcMGlFu/BPFz?= =?us-ascii?Q?h1NeVfOVEZ44uoXvXf7JpZPlowtAXAqxIdCk2xqbCmwh8O6QZBwm4XrhMDtj?= =?us-ascii?Q?6C41b+ICLY1y13ZYwxASAUwic0/yYwr3XPHFf67UXDAB5W367tHr95td6cby?= =?us-ascii?Q?fPpvC2dJnA+DU1qPmJ6/xSEKWvfTbhs8nrY3RrTGtC94tzPXWWAL58tIGtd4?= =?us-ascii?Q?j0suvSl/mTR7i0pAAcEmDIjuGfoIOmftKRcH2xcq/4GSwLjFwCd6xp/3SNh7?= =?us-ascii?Q?ui6oYHZTtLYygYXq9FOLIsZpTHCr/7JQYabnmYK5trujSW9EeDujBgWFlAs0?= =?us-ascii?Q?ngv31fH8kcVByKQiVyr8baGLoLonmS5Fwq4s8qBY6xYuRLUIZBBZ4LR4RBEC?= =?us-ascii?Q?k+SUx6gOlRf/m0TQBeyB+B/bCrsd0oW+Mr+eKSzO4uRCremnrl9DrwGbpM7U?= =?us-ascii?Q?ymhxPJdpuoTQlVA7CxU9VR94KTKZEKkNSd1k8nFJVylS5MbEoEArBcf9j0kT?= =?us-ascii?Q?nKsLmvhzHkhNzuZzkebtoPNUzLksC4uA2Jta7TkNFphrjwlcZqxa0nbf/5GL?= =?us-ascii?Q?ochpngUlKXiQHmIYtY6ggWnf6t/c4KZDHS9VMSqop0VtyTrYljesSmd6kvfF?= =?us-ascii?Q?VJ18QO8Pmc/m1LK1pQx7rs5AdRR1pLz6aej9GmWEU5WnKiN1EuUGFaeC62Rj?= =?us-ascii?Q?Sh4KeKEFrbbn2SwYTvmitr6IvLkm1SSHvbZWUyIRYuz0R7hD3UiAzk/SaI1G?= =?us-ascii?Q?a4w1tAjl39cEU0dQ1uzQTfpR/J3pWtQ5o68/XV0YjGJJBxt8Jonjia/cbPpt?= =?us-ascii?Q?r65B/znbHRuIEHzUk18OXSEEYUg6D7sSwUcSdrPjg2wzmd7Scgo2nGB/mgC2?= =?us-ascii?Q?82X046ZKZexeNaCwS1/SFEW2ugAk4OTryzdnttgYukKFjyYscfsZe7m/xpG2?= =?us-ascii?Q?hgTkHmAo9uIot0djz14cSGICIBcNvpSFEf/tAhxZK0VXRNlsedmmxB0DLnLn?= =?us-ascii?Q?QgjEHVG6kxurfWxHXQ7PciBHzHr3U2RgR7fDf04bmtAFWlVcO0Bn9Gsi/5+P?= =?us-ascii?Q?JLGH0d6K7Dv/ZHpBfejCj94=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83c9daf9-bba4-4a97-c670-08db723059d8 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2023 08:20:19.5780 (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: UultCc1IlI+X7siq1H/CIcqo2PCnZVRIUFzQHY1dTuNFiqSNdAvqUbX/ja28MtL9LeuWQZ6zEVdFTVnVMMMtC5MDcMQD8EUizXn8iwqv1Jw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8422 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe0d::726; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-HE1-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1687335728124100003 Content-Type: text/plain; charset="utf-8" Initially data_end is set to the data_off image header field and must not be greater than the file size. Signed-off-by: Alexander Ivanov --- block/parallels.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/block/parallels.c b/block/parallels.c index 1ec98c722b..4b7eafba1e 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -868,6 +868,11 @@ static int parallels_open(BlockDriverState *bs, QDict = *options, int flags, and actual data. We can't avoid read-modify-write... */ s->header_size =3D size; } + if (s->data_end > file_nb_sectors) { + error_setg(errp, "Invalid image: incorrect data_off field"); + ret =3D -EINVAL; + goto fail; + } =20 ret =3D bdrv_pread(bs->file, 0, s->header_size, s->header, 0); if (ret < 0) { --=20 2.34.1 From nobody Sat May 18 11:46:55 2024 Delivered-To: importer@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+importer=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=1687335717; cv=pass; d=zohomail.com; s=zohoarc; b=JK0gLkwVIdZ2aGv/0ATnDmmGVeQxdrBTTqxAWK6IY53aQhVq3caWPkhtm0XVS+qEnwb4vc0nd3vuB/czgm0uunli5WGjMrl7O3ta2tulC/bIaTsgUToyk17hh0+hYjnR404sA7zTouagAMZtwcOHNcyDzJDzHA7b2dNvTLil4Uk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687335717; 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=pe1pJDO3O0byZMFpzd+Ge0nMZSTuL1f7T16YHjPMQ3s=; b=jMGw3r5GtOdlxheOFixV+SWyjuoTTgLQpII+zm4g7krTaSAWVqMrc3JIfcFUFMn7fx7Ft59lt4PLtVhsBUImbB6ETxHa/r8gxYj3fDOLLds61RWj7/to/yG98yA1mK6hvuymVSp4RbH82W3WzanKSBm541+I5nTGQ1pRTri7IE0= 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+importer=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 1687335717384353.52010908600334; Wed, 21 Jun 2023 01:21:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBt4u-0000Lx-6D; Wed, 21 Jun 2023 04:20:36 -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 1qBt4p-0000HJ-Cc; Wed, 21 Jun 2023 04:20:33 -0400 Received: from mail-he1eur04on0711.outbound.protection.outlook.com ([2a01:111:f400:fe0d::711] helo=EUR04-HE1-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 1qBt4n-0007BN-NR; Wed, 21 Jun 2023 04:20:31 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by DU0PR08MB8422.eurprd08.prod.outlook.com (2603:10a6:10:406::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.37; Wed, 21 Jun 2023 08:20:20 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6500.036; Wed, 21 Jun 2023 08:20:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lYv4LLtHadxCuPY6d5hsZIhrfYvRx6WYAcjOwvPKlpjS381IwSne1TbzzX2EEzPSLgEAqSVful0+huWhSO0WtrwY/11aX0wGEXW5JCcdce2HUCRphIJ4Kh2BTq55vFg9FOgseC9y0UNWDKa90WSYshT/TVFrtlk85nCy/6+4OZmODIQ6zmevLjKztKUHiG7Y030Be8xT23mdZ252utxyiDB6k+zSbSzsfIF6CqRKXquVhXiQBbe9cuaAjaagIylOQEUwRj2vvCJ2KWtTAbtokGc5FRVviWuzsRggWKjBBzA5IGvu0mv/N8UzENrSWVFLAz77eRmy2vMvPoTT/NHw+A== 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=pe1pJDO3O0byZMFpzd+Ge0nMZSTuL1f7T16YHjPMQ3s=; b=Lp6RiQaPuXfnzGPsJ1j7O9Fv8rf1rVMx2S+3IH2gfsMwfc3Gs6tiehjOZlKdBbY0mleO7+nktNSeg5IRsrPYXZpgPTC8fwLxNMiiuAbR2JXaQbg3tafR1mQU5qde7hvV199QZjXbi4QaproVuMDfWTl79KaXpkWPVWMOrKk9EuZLFlApiGgf3Lrb+t+T06hg6GMmMpna3lyFho2IDpj8TvOHIQA7SM+xCFKO9ZCLrf1dfk+JSUpcsPquW78PchhUuTuOIU2jzQlFnNzc8VDZcx8KJmf/+3kyFNvBtPoMijn9KJuK6+j+UE8KOion2E5PaWgKmGfcS1k802Ocy7tazg== 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=pe1pJDO3O0byZMFpzd+Ge0nMZSTuL1f7T16YHjPMQ3s=; b=LAZCXvsMWY3Y7oqkB/EpzNAtQfrwSxNIXFmJAQaw6mjfiRKVe6Nqs81yeJuojzADurQZ5Wp6E4BiwJaMGRdOw/mfSokolE3030DnCPljRpU14PdB4cM7mfiS1aPDX40Es/qh+diUfng89Ymic1ffsSQ4vGDSEnzIPkqLbp6C85qydaIenldlVYvJx6ynO0yCHVZsUNiZYGCMjTmJkLlxMRz3shiW/WnUw0UpjgGHO1bIxsS2lkZKsLAkeaXmimsXoptBnwaIufqcFsbJgqcMN5L0tqdtTsUmNpl7kukD0iPYq8+WgtbdxqMXazA4hPFki5l7An7Fyk73BtH75MuC/g== 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 v6 3/5] parallels: Add change_info argument to parallels_check_leak() Date: Wed, 21 Jun 2023 10:20:08 +0200 Message-Id: <20230621082010.139195-4-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> References: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR08CA0165.eurprd08.prod.outlook.com (2603:10a6:800:d1::19) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|DU0PR08MB8422:EE_ X-MS-Office365-Filtering-Correlation-Id: f11de038-bc86-47df-5bc2-08db72305a33 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TTaP8ioMKk/3wtFVLpp1JUhkRG8fXIT21ESnAydyTAmk4jWncIYOcRGGzneV9BEusgT87G9WVfSaZwhTPxtTofeFihGpIIeu40E8YOGQqvFQjI/l4nsw6hrZ52hHFm+mqgbdpMRFSguBF8x3W+SBmbns1arYW8A+pXBHhDatRcQ24G9Q51tDqpa5I0PZvEUmUoOAyjraVK75xg3XRkX6wKMU7mIV2ihe/21GwG4VgDqOB1Kq/3JV4EwYj5G8huH6ds3QXWYUbdanrx/gixo8TSFbrQa8UI203aqzKT1YHrdme9OhM47agz/pFowlvEPEtfuveYWViFzBkn95ru28BEcF/JMqeYj1mwTUs3GzHf2BTBUWe1ulBt5Ewel51Xd2Uw3vVxXmVy0IuupANeMht677Hi+wpAgX4R6UOQSNECQCy86UwGkEIzSQ8uJXPwQUWWTLoxcqqku8By6avlM3vhP9RAjm76nottA6TJ+IOmssto/6pRncvGob9PyH2kZ7Q1cm3NrKAH4/U9OvWfi8cC437PDjg7/wDqniur3wydxHEaeiynlPDYWVFn7vpQKcq1XJIqO7eqyBsZ/obHSYmw5u82jnetm6tjzFQLTwmwGL8fEx+i3vHQoSG2Oi7YEd 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)(376002)(346002)(39850400004)(396003)(366004)(136003)(451199021)(66946007)(44832011)(5660300002)(86362001)(2616005)(8936002)(8676002)(1076003)(26005)(6666004)(186003)(6486002)(36756003)(6512007)(6506007)(52116002)(2906002)(478600001)(83380400001)(38350700002)(4326008)(66556008)(316002)(6916009)(66476007)(38100700002)(41300700001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aoUrE3bDbHppbhiFCOGQwF1Qz9jYYkEwOrismllHuz9/RrEGXThrnqXre3wn?= =?us-ascii?Q?JZRn/okj1yyaBMOO5jz8Ibs4FfjHsBVJKDTrt36DNM3JpTL8BV8oKjq3c2ID?= =?us-ascii?Q?EGrFc3U/L3P9zQHKx5XdzVw03l9Tmek10iSbUx4HdurgVjTBRobxLhMvhmVG?= =?us-ascii?Q?J80sLvFcW/yvyW1QGyRxlqqaE2qUsTr4+bfxQrnp8oTXvYPv/jTPuU283l0C?= =?us-ascii?Q?iY978RsnPW70YZ+9TaC/vl+CTsKxOSZTbEwrppz2kTbQsRXyA2GmVIIwIeIS?= =?us-ascii?Q?v6E0ObO1htDZAShd5PbLD54fZBE4CnGJYRFjYPu+5SM909N+FNXOQ0peEpPa?= =?us-ascii?Q?qO0XuZThs9Et7kAF6H4ppw58Ym7BO27EuYvRVK+GI8o4zfESw9GAVO0vdcjy?= =?us-ascii?Q?Ox97YMG/TQcETpQeSnVHd8UDBybWb4a+u0AVyznFSlCuzkzI2Hesj/83M6yv?= =?us-ascii?Q?c7RanztAVaLf9TvayGPAXplo/Dpk16MAdnBjlAMkrkqAEp1XMRVMM7O+kIPz?= =?us-ascii?Q?tVADUXDCjV690OBUdNFnPFZs1+deWrpg3cvXQN20IC1hR5BZwqBum6UBf3gh?= =?us-ascii?Q?85n74mwL3JZbP71l9T+GATQ3+iIFPSCPWbE28KgqzdxZCRIcD9Rtje3hx7TO?= =?us-ascii?Q?LNXlQPBzyAWFEcsuhi9Dy+sSjxqgYWjJ16oggNGTmjxs7s0bTwEV7+ZoHVag?= =?us-ascii?Q?/cKZnroObd5QkCtmlprMhWN/qpymSnCy17fTSFBJqREwS83Sp5r1zpZyPZWX?= =?us-ascii?Q?8xo3vZ3rhTv8Nq1sKjpaevqNTiPC4W8+Ms0lKqT2f/IqZ/8IAjEliRgWR1vK?= =?us-ascii?Q?9EWiKW1zepc07DWFQqU0bom6zuo22ezGJgJTU0H1W5BEqZFVN7NDHTjNUAnf?= =?us-ascii?Q?M7xcYatpfsKGdnDImw84vDYqe8LUA8+SNqfDKF+R6/R2KRTUZ9XHq1r31ECC?= =?us-ascii?Q?3hMRfphRdByaGYFqerCtp45eO+rR8DUo0Vik9W/HXG0W8W3HYcdjqNfZiV45?= =?us-ascii?Q?obIHUM7bdUJKYsQW6VBcGrGvmwPDH/KkZh7UKYK51L7FVj8mqYa9fZOzkCcM?= =?us-ascii?Q?kLzrks8Qz6J57uu+Yl0vVDmPZnpSw7ci9A5Xl+pA60nN9uD9bY1pXCGGkqEM?= =?us-ascii?Q?KoTkbm0ldJ6U7r1iBdjZh6CJZwAzuAaoUuHLG7cNH6x64k2z1IfOGDdmlr3I?= =?us-ascii?Q?dgOb1qU+jsm4UyKdML1AYQxhq8ujEhuATAd7+G89UTqGhiGHoSKSpKcz8B+y?= =?us-ascii?Q?j/T8bv8R4vkgZuzxfQQNY+fILuwH+4XpEnGmq7U0fYLMRg1PfvqM/44wxkGo?= =?us-ascii?Q?7uPEQ5bDDQq6NtYCS5oNy3oZh7ebvbP3xsJsVbUBcipZ2JT1yR+2+SO34bP9?= =?us-ascii?Q?tf1auxXh2xBMHTa8PkfiGl/h3aTH68Bi/4MBH7LBlj8s1PoNSikTaeEaULa5?= =?us-ascii?Q?MYF7ZwuNU3Ob8PFTlTpIi2yQ8WgByqG1bHaFOxhWFPYvMgwDbhv5nz1jcNbH?= =?us-ascii?Q?9wRfePlvYrrfgMo+uslT5JfSL5bEJY0uX5VBoFItJXmEQMqxHkJZVQ8raMXm?= =?us-ascii?Q?SpP/Ly01ctHkjngpIWHczYz9Av9lP1EWA98But8h5z2+p92MgSCJyZihSP/R?= =?us-ascii?Q?Qh22GLxcJn1qoxEPgcbEJls=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f11de038-bc86-47df-5bc2-08db72305a33 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2023 08:20:20.1472 (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: XHLuytIX76WrF9HcFYP1Sm/QR/6B3UZDqtDgKneTC7fmObadDmrYJlqdqm1Yer+nN+rtk/oqu98oADIKmKAI/csn75hZ52QAfA8MjCFLKKg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8422 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe0d::711; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-HE1-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1687335718686100007 Content-Type: text/plain; charset="utf-8" In the next patch we need to repair leaks without changing leaks and leaks_fixed info in res. Add change_info argument to skip info changing if the argument is false. Signed-off-by: Alexander Ivanov --- block/parallels.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 4b7eafba1e..78a34bd667 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -484,7 +484,7 @@ parallels_check_outside_image(BlockDriverState *bs, Bdr= vCheckResult *res, =20 static int coroutine_fn GRAPH_RDLOCK parallels_check_leak(BlockDriverState *bs, BdrvCheckResult *res, - BdrvCheckMode fix) + BdrvCheckMode fix, bool change_info) { BDRVParallelsState *s =3D bs->opaque; int64_t size; @@ -502,7 +502,9 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckRes= ult *res, 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 (change_info) { + res->leaks +=3D count; + } if (fix & BDRV_FIX_LEAKS) { Error *local_err =3D NULL; =20 @@ -517,7 +519,9 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckRes= ult *res, res->check_errors++; return ret; } - res->leaks_fixed +=3D count; + if (change_info) { + res->leaks_fixed +=3D count; + } } } =20 @@ -570,7 +574,7 @@ parallels_co_check(BlockDriverState *bs, BdrvCheckResul= t *res, return ret; } =20 - ret =3D parallels_check_leak(bs, res, fix); + ret =3D parallels_check_leak(bs, res, fix, true); if (ret < 0) { return ret; } --=20 2.34.1 From nobody Sat May 18 11:46:55 2024 Delivered-To: importer@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+importer=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=1687335730; cv=pass; d=zohomail.com; s=zohoarc; b=IuzJ4vyqtFoRM+0NboX7bY9PfdCDGR+RKyV074xHhHRMwzzlRqkW7itONZkLMYp9p+u+J+XRiSBoH7A2h2BSO/dY8TAYRmb+m/p3sJlGteWRcH/e/av2IPxJ2hhXRk0RqQrfR6F3chKqtpUYPEXNYuBYH4zP++x4BwK8NZZfZ+8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687335730; 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=/swzjEA4VFYanQpi1FIIbtk1pnBMq7npMJFUtvSYk0g=; b=SDipEpu03ONzLjLOATDyiIv+ZMCYfT0GytmR5lUrAT5Y+TOZm0GD1Tbn57DKykVQw5nv9dwrTjTcnauoUJoj6cz4a14egloOAm6MUuzdsdr2X1iS/KKGKq6RCW+sHl1C12SMsrz2UGEwlrLDbPyM77BOj64UpFqVnUBFYPi5Y2Y= 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+importer=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 168733573002167.5172789009805; Wed, 21 Jun 2023 01:22:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBt4v-0000Md-EF; Wed, 21 Jun 2023 04:20:37 -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 1qBt4r-0000Ie-Ji; Wed, 21 Jun 2023 04:20:33 -0400 Received: from mail-he1eur04on0726.outbound.protection.outlook.com ([2a01:111:f400:fe0d::726] helo=EUR04-HE1-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 1qBt4p-0007B8-K0; Wed, 21 Jun 2023 04:20:33 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by DU0PR08MB8422.eurprd08.prod.outlook.com (2603:10a6:10:406::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.37; Wed, 21 Jun 2023 08:20:20 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6500.036; Wed, 21 Jun 2023 08:20:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nAlVdGuxCyayUEfZjK7QFtWyUbHwZZdWwiFKT0koweJPxQii9tSYipvXecq3oUDlHZ41aoRaIqkKA/v4sRk/kkJA52618cifGXKKvw1bTl+eGI5a5FU4+ogtho6+NVvchJcb4DAFjmqjrzmWMiq+/GTZjfqZMrJ7uYx8ZbD5BNiKG4aqUQCmFVCjG6yEzceTNmmxAPz3vAfSZMAAYrmmW9lZVrzDx426Thgsv2Ka7Dp+j8Tckym50kERtY41CJHKM4dcyGKeke+dhZPiV5UT7LsQegCESTEYvkWRi9v7oh3RU9QGC97F2CM4WXsx+OSSjIkM/Aml8CRvKPOLx5LdhA== 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=/swzjEA4VFYanQpi1FIIbtk1pnBMq7npMJFUtvSYk0g=; b=FMkqTShJxdx6NlBQCuPxg4Ed5U0st9Z6Os4gg0u8VjtsUp2FIhaFyIDC4Pf7iLu0P9n15xxuYx4VWnLYnYc1xdzH8fa0be/MSpdqGpPlfJxeT249VrDyPcrVFWj3qJPlPPORzKNyuSawNlZNTwrOR50GPKItHaw32VkzcNbySDUZYag/ZvYLloCE5ehwBXf7pDxORFgpyuB+3x2krJjmP0V/8u2rQt13EmJcAv4yTXjxvgN7jyd2ETF2+JySqtMQxxRhzjtTz8mfaFjmOmGZL1Pu7ekVwzGn3Y0TMQMIRH7sXf13GvywdvY6Id8pEM8/tKBUIUur2by0Y9Ph9Oj9ZQ== 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=/swzjEA4VFYanQpi1FIIbtk1pnBMq7npMJFUtvSYk0g=; b=BUISDaLiXbgwO/Pepl2NYwIckdiXIgcUtSOUNT+sgctDZPsJv17z4RhoHRSojnnmAEDbbUhLixWlPGzsKii9kiqIi10Wd+LUZHaq4J8IFAEMR//is7Br8wcyLXfloomJaxfVHsfJ8LNMwVT0uJDygOwC58LinsAopsGi/4Tkz3WeXbMhpWCr4fVylueihXW4hlOAHN+A9qUZf3BwABImYpvtBVGYmKfaGBbfXzCtj3LlYCngFAMcST471IL2MKv8VQbuS+dcBCgbq6aEht8QMqlSarjUNUoGEKDe1GixcZj6UyKft24l52M7Z8GSUeodaLl/RktfndV5FNuB9eQbGA== 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 v6 4/5] parallels: Add checking and repairing duplicate offsets in BAT Date: Wed, 21 Jun 2023 10:20:09 +0200 Message-Id: <20230621082010.139195-5-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> References: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR08CA0165.eurprd08.prod.outlook.com (2603:10a6:800:d1::19) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|DU0PR08MB8422:EE_ X-MS-Office365-Filtering-Correlation-Id: 907c4392-64ac-43a8-8ec4-08db72305a8b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NeoHUlPvsRDA8BwNtMdYwLMMPbnbi+M9CGWo5NseGRNxryU0jD6EDHnymgjHy2zOhTJBEiRnGPCU5poKpZeD7TbD5CMXW5p76Agu84q0ogVrYloLvw76Yyep/9Ilykh893rvmjKT/wJp9ZqBUXJnCuHudikOckYE9N/EMksKEw33UBVoBe7YTvAj8cWidQmy3XrzmeAfVDsrG/V1UAwYRfxL6BO3lTIlfLwOpgr9T7IODQ6VdOcs/rXQDgYlKv7SYDU0AXEZbbEoOdb6eao23+gKIQk4hjbM+3xqyp1OEjkCen3s5fOdEYFlJuzbehrT5L3FwfqVImmvcUDyxcC0OLV/mot9FWqrPKVvrbWkCpUP4hXRmkaMpdwEShBBpjb3vwSbD69wgFZbR+dYPB96HmSop9IJuIm53nMxONeKcN2qzrmXm0YnrQ7AHNIdC0+q8irbCIebEy0hPje+qZ4Xmrv0dEHb2q2Z5KYInkXTTYKcyvc+M2Dd6PUJPYhdiZnpMx0elke5/mutXDSVPobaR/Q7L62SdSgRakVh4dlKti+k2eEoayUTukVZLpKLYAyih+7LPk1KLwv8jMu9EYG1pU2DhnKzddCKNNudAIx3FErDX9NdQcD7BNL0nfJR/OIb 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)(376002)(346002)(39850400004)(396003)(366004)(136003)(451199021)(66946007)(44832011)(5660300002)(86362001)(2616005)(8936002)(8676002)(1076003)(26005)(6666004)(186003)(6486002)(36756003)(6512007)(6506007)(52116002)(2906002)(478600001)(83380400001)(38350700002)(4326008)(66556008)(316002)(6916009)(66476007)(38100700002)(41300700001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?z0hNcgLe3zONUFqOxbjxcvuRF047wqJK7GIx7P6x/QvfxH5rCTlWFMpTuOon?= =?us-ascii?Q?1KujG30yHvMsL4x/bx7LWqWv6bihiIvrGY7JLk4MLua1pGhwSQD4P33K3N5y?= =?us-ascii?Q?pWW0OROLy78vCqkRjuEfZ7dACizDY3InkoRvqXBk1Nc2x5T0n7ooajBn0j/5?= =?us-ascii?Q?/uYNjl4VqjTsrQ/rdO57BlQbgQcRQiplTPmrPucZCIOTCQic7/VFc9ar0xbr?= =?us-ascii?Q?Z8WvpXU/LPG4rYuN9QQPej/xaG4SFx8+S5fMAib44F1KhqIYJ/+5XGsZ5hWC?= =?us-ascii?Q?1x7dobfyDACOXULSb6l24OMXAqhgRqpHBTNvJxR0DkXD//1n9O89JB9Y/HZX?= =?us-ascii?Q?vFLjqSlWy0/ZYA+rp+rc7dBPiDo3qm3gqF8oljgkQdRzr7NWuidozvGs7LRk?= =?us-ascii?Q?nUioUV598yJZ4OKU0lhzUYdByu82Yq19DzyVTPvRIHPvmB6LoM+MwtcFImMU?= =?us-ascii?Q?DYVU5cIVDdllHEOG7KPQDILACjuIPb4EQHOHIf2uFl+SdbljCwV7EpDnW+ue?= =?us-ascii?Q?4M5YO0jq+oX+G0dPl9I9fMBRmXNB9h34gFYNBThWSC0EUSXpt6cQf/ms6MXV?= =?us-ascii?Q?JJ2iyujlHUySNoXGuWQbfayBmLM+WOPbbPRFQIB4xDVheoSGTV0ApQ/tCrEB?= =?us-ascii?Q?mjFM6U0AvCAJvATUbAeZYAYjfmlDUQhGG1nHoeD9pa6vxuF5gMUHr/b4VkA4?= =?us-ascii?Q?NS2jRXvMNmyB3cmv1aeFeouNBahV9Qtm4UiMWNc++Uzfuu+6vLorKBDVysas?= =?us-ascii?Q?Ow1YRl+XCxQY60pGksezlCxzRH5igCq5ueRUQlBUsg814W3CCJAnGEV+uoge?= =?us-ascii?Q?BMHn7NTLcoocyjMaG7723xXNH8ZbwUuC7WVv6zG8M0rueGm2fOZ3TveuwJTl?= =?us-ascii?Q?KacspQfGGrRq6GJntONf9+hbnklKK/NDPa1wSQqN7z2kSm3TEGjIUSisyTf5?= =?us-ascii?Q?DYeFTtR+eWPyfN2fA5vgpc+OplVJyEqFpnns7cwRqtwkTK+8j+ceF84dbZjA?= =?us-ascii?Q?xk1mH89kbNSca3omJ7/wHeKGlqd8OR1HbsQMscjUPRnuX7W4MnNDmpQn54XX?= =?us-ascii?Q?2xIC2eIb9fgUjG6gVUG/xdPmSxG3e1B6ryOvl9/JG9atpwgfaQVtuzc7dSUy?= =?us-ascii?Q?Nq14hrMmtd1P6QXTMbnUyJBo/NtNhzF5gYAhDcdvV8sa6pEBpEgV9OKCxRIk?= =?us-ascii?Q?ZrFZ0NBeHVvXL/SAfBJjmJU94+B5V2+ZeyaPpJt3xWypJKnTHEuLloyClAFo?= =?us-ascii?Q?aDW8TbY83fIH+1fI0IPJl2nakYLpTWaJSDhakAk6xxEwtCUl6FfrCxyOwqmS?= =?us-ascii?Q?pcOw+/pyDdiPqT7GS3TUbeyLJc6l+JXUpvkkAZ91iqmPCmkantoG43Nkqvlk?= =?us-ascii?Q?s4zlAjd21sQhgqlnc2mEkB6TNf56V1ldxUoTpgw+ql7JCjWFwZ2LwxLKmDE/?= =?us-ascii?Q?gpsdfl2a4x991ytqkRFFgNTlO/tiJn9YzIm4X+CpymDEBkW5Cb4Fr9uMLsP+?= =?us-ascii?Q?vRHSlzmaKKD+44KDS1ypbj+C4eBSYPh/d3AL5p49nO4o6RypJFuCP53KhJQU?= =?us-ascii?Q?mCwCQijju6p6D22XK3ueSzNAoFL8Z+eHnRe1py/iMTHdPD0UhDRbs02FjELE?= =?us-ascii?Q?mMRwXXJ355PYWJhexipwFr0=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 907c4392-64ac-43a8-8ec4-08db72305a8b X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2023 08:20:20.7142 (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: EEGczx5B+D//F7IgAIkJbldKE53M/0MlstIOFl3kVtnPEojgUZBDRGHpGCCX3H3KnqdsGD8vsfkHp6Fky2IiGEFZNOEOaHk8/pjHv2cDY4A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8422 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe0d::726; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-HE1-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1687335730752100001 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. When new clusters are allocated, the file size increases by 128 Mb. Call parallels_check_leak() to fix this leak. Signed-off-by: Alexander Ivanov --- block/parallels.c | 142 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/block/parallels.c b/block/parallels.c index 78a34bd667..d507fe7d90 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) { @@ -528,6 +534,137 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckR= esult *res, return 0; } =20 +static int parallels_check_duplicate(BlockDriverState *bs, + BdrvCheckResult *res, + BdrvCheckMode fix) +{ + BDRVParallelsState *s =3D bs->opaque; + int64_t off, sector; + unsigned long *bitmap; + uint32_t i, bitmap_size, cluster_index, old_offset; + int n, ret =3D 0; + uint64_t *buf =3D NULL; + bool fixed =3D false; + + /* + * 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_blockalign(bs, 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); + assert(cluster_index < bitmap_size); + 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. + * But before save the old offset value for repairing + * if we have an error. + */ + old_offset =3D le32_to_cpu(s->bat_bitmap[i]); + 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_repare_bat; + } + + sector =3D i * (int64_t)s->tracks; + sector =3D allocate_clusters(bs, sector, s->tracks, &n); + if (sector < 0) { + res->check_errors++; + ret =3D sector; + goto out_repare_bat; + } + off =3D sector << BDRV_SECTOR_BITS; + + ret =3D bdrv_co_pwrite(bs->file, off, s->cluster_size, buf= , 0); + if (ret < 0) { + res->check_errors++; + goto out_repare_bat; + } + + 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); + } + + fixed =3D true; + res->corruptions_fixed++; + } + } else { + bitmap_set(bitmap, cluster_index, 1); + } + } + + if (fixed) { + /* + * When new clusters are allocated, the file size increases by + * 128 Mb. We need to truncate the file to the right size. Let + * the leak fix code make its job without res changing. + */ + ret =3D parallels_check_leak(bs, res, fix, false); + if (ret < 0) { + goto out; + } + } + goto out; + +/* + * We can get here only from places where index and old_offset have + * meaningful values. + */ +out_repare_bat: + s->bat_bitmap[i] =3D cpu_to_le32(old_offset); + +out: + g_free(buf); + g_free(bitmap); + return ret; +} + static void parallels_collect_statistics(BlockDriverState *bs, BdrvCheckResult *res, BdrvCheckMode fix) @@ -579,6 +716,11 @@ 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); } =20 --=20 2.34.1 From nobody Sat May 18 11:46:55 2024 Delivered-To: importer@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+importer=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=1687335707; cv=pass; d=zohomail.com; s=zohoarc; b=ai3/4zw0OIu5auoSaCKUCoxIz19gk94q0UMr3FPtNANCQywZRTWokYcvLOvVXXfLzcx0EFkf3LxxTZTzBW1wLSvfaAmwrBSYLtml9z1rYl6ElRN54OVc3u+mvG4Pq8MCM+7luiATa9Ik/WWURQEVKwDLmeNYIZNYghg1zU1HjdM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687335707; 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=gYZKZAV/xlQ1JqMbD4fY+xFVRPy+Rra/0ZkNgpnOXi8=; b=SVtSJkxsqsXCph6FnNL1n2dQMWwOGak4nW9wWGTVPm8PSnOYmpHAYXOFXpJBJe27KUrMNcZqRBDaR/9BaBui1R2MGdnLs74s2K5b2ylOVrhmNlmn1ZSOVb03t/tLVh6CToqLosz4lnwoIlo3nWjPL68TnWmgXkmP/LwwP0j0CUc= 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+importer=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 1687335707661873.2357477379188; Wed, 21 Jun 2023 01:21:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBt4u-0000M5-Ub; Wed, 21 Jun 2023 04:20:36 -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 1qBt4r-0000J1-Nk; Wed, 21 Jun 2023 04:20:33 -0400 Received: from mail-he1eur04on0711.outbound.protection.outlook.com ([2a01:111:f400:fe0d::711] helo=EUR04-HE1-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 1qBt4q-0007BN-2c; Wed, 21 Jun 2023 04:20:33 -0400 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by DU0PR08MB8422.eurprd08.prod.outlook.com (2603:10a6:10:406::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.37; Wed, 21 Jun 2023 08:20:21 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6500.036; Wed, 21 Jun 2023 08:20:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iE+54W+A39hqKJBu5wh0/kN4U8MjPpRRvNBPVy/OdAWbZ1CiFTcoT1hY9PjipMjTvEsutJd/jkK9lxu5796I5RU0WmuRJXTOJn+/O09w/tv1/ve1dRrjB+IMEsOYtE2fwUWXnMRb2UVPMJNRYE8Wug+DkU9ldmvh4WYsWXEPD6OLxEeriCADRtN39+s9Dw/wC35Vqw2bFq82ccRnrp52KaRp2kSkjh9zJIppmr4atB+KAXmAuOEb+Cn1Ip/vRPwe9YwpOY1Y7Njx6hXOF+qphQIpTJLq1N6u4Jl1lsO649h1GsEMxAfA4ZQcYHksJeXWRWwOsYhw13Ulu5XlkdFDtA== 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=gYZKZAV/xlQ1JqMbD4fY+xFVRPy+Rra/0ZkNgpnOXi8=; b=mxXWty7H7q+Z9iavJ7q4IGgNNlEfDL+M1bnxclWOqVhl19kRI/9vpaGFkKADHqUVVOqFpt2wXncybz2+Ykt2JlQNbnAMwwqOmPkzWe1pUTOa2rMcFmobnqwivbbiO0qdtl/RpcYGHtWVXLsM35cajSvo1+c2qRLjSHqrBk/LOP+kF8LAYGBnb3x4Uqq2InDlKAX8ZD2dqcpcHS64s6DEqSdZi63xXvRC2h+PjjpE/ccBsKe3lf/zcE78ItwSFY2XaJURr4c8AITMGzs1Nxzu1sAregZrsxWn8EcbvzoOQc3a1K0WPoxsikGnKIQeSxhidQoFRcb8L5OLDH7HLs6/oQ== 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=gYZKZAV/xlQ1JqMbD4fY+xFVRPy+Rra/0ZkNgpnOXi8=; b=lkWnWzpmNEpPwEP1TzgQ4FUD4KcSmi8bTvXMMhg0Av+fUKhbrICpysIBV/ay4VGh7UglU+O70qQYN2/xhVPPcGa5hdbncjscHi1jQgYXI8JUsbHT1ychpPLs1MyobQGN3WGysEsuQZRGVNUafdINhuRCOkSP/g93HXnEzuf8V5wjrAXplJr8juO1jWk2p4tH1kCgwJdo/MDIHRCdpj0azsi3tfwa1g0CjYyBhU9xNsP/VoY1lwZ+xRwmSSMUUQHjba7sAMhKqlXDzhByRd+M4MucrwGv+xMkkqXsTEtPkZgsCnF8pbrKpH3KxsA45LKYeQRY0jM5iiHlRW6BH6QPbw== 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 v6 5/5] parallels: Image repairing in parallels_open() Date: Wed, 21 Jun 2023 10:20:10 +0200 Message-Id: <20230621082010.139195-6-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> References: <20230621082010.139195-1-alexander.ivanov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR08CA0165.eurprd08.prod.outlook.com (2603:10a6:800:d1::19) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|DU0PR08MB8422:EE_ X-MS-Office365-Filtering-Correlation-Id: 75bba585-d4fe-4fe7-5f7a-08db72305ae1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EWcCri6GGuAq0ZzX0OcuqJaUxVSvwE2UfznLdqlMsZSeErKhgOOCRkOwreW1i47F274bYMWB3VCHm6V48TW6FQg+9YXAIw5Ud52wwlm5hcv5NveUUsFY5vAmHt4TUvdGsl8qCtnk6q0r2rQ7858UUhFBjDrg56vCKMLzKST3l9FTej/NharKISp3SFa9Oq7hhmDgvO5An1cdHDscldhpgjY960TxQ5ytZmKaJY+rjHy9r6F1Bnrguds3i4bQkDbw5n5tLWdlUtvXSSKd5O++Y06jj5JO5EU5QI0eYiYjTFvpQmkpn0NT7riJPKMY9+teosp5TUDTeTYYbrGWdGPhJ0BuEHlHz6JPQ+O9ZR1QNampM6+I6UC6/rBFnjsEH/MKrPeZMh5FscKRb7rI0M//ucXpKboBp9WjZ7cdOmwfCS4mAnz3R72xlH6RHoia0NhT2A6SgN+Q8VzNvNXptO80BMr7ZLfWLnABl4vHXvRV/jSTWlgtfas8hyVl9iVuPFFHQeNTjrOC2GUk1TcqD9LWsSV6W/wAH1qc5u6DHKwovBztGrICUqeG/AK6VMZSB2SVolyaL+tlJjpM7626pl2QYhlLpugpeDdMMzVwuORHdvie2DSu/wrnJzXHRwwrMsW9 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)(376002)(346002)(39850400004)(396003)(366004)(136003)(451199021)(66946007)(44832011)(5660300002)(86362001)(2616005)(8936002)(8676002)(1076003)(26005)(6666004)(186003)(6486002)(36756003)(6512007)(6506007)(52116002)(2906002)(478600001)(83380400001)(38350700002)(4326008)(66556008)(316002)(6916009)(66476007)(38100700002)(41300700001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?99teRLaGv1gQw+kJBRALgcvyvY+SPxM40hrcnqyFahSAYlEV1ngR5BcKmWpq?= =?us-ascii?Q?YI+FZ5XhrHoaHLnrkKA1Ql/0x+bqm44L4zdu30tvMWsdt+XIJG8EvkZDOkB2?= =?us-ascii?Q?VKXy96feE/J+vWtjZWf3Z7nqFnHi6LBhgitQRu1Bd04eI/hUTr2SKqp8pSTf?= =?us-ascii?Q?Z3YTd0XMM787S9OUvc00KjtqTZQlYIgi3v1eHzRiGMZ1cTdsaKz6MhzpO1+B?= =?us-ascii?Q?QdLhC98bQUieryC6BV5Kkf+eHjKJdkz1EggAGD1Bgr6VLwloxkeew79+qTGg?= =?us-ascii?Q?gCEo9vI1yFQvKC7LFk6+NDgpGZf9qAlTntFjplOJJWmTzLMlARF41zTO46uw?= =?us-ascii?Q?PEjk3gDTtJ8mpb6xsa9GMheKIjVp5x5tIQEQa69cpr8mryz4IuwmNKofsazl?= =?us-ascii?Q?ifW9OD428EKCMPjvfDVcFfzeYEnTY775iLYKoOihF7iOXEZEqZq5TbZI1mfA?= =?us-ascii?Q?BFJ8TpeDFEwy8zBOQjv1+JNw6tPoc7hS9NN8WKsp3yUzQ8eqYx/aZveTHxFz?= =?us-ascii?Q?+2d63xkeb079sV26T16FtsyuwxrlIYFNKelvvjTbntr20BvrdogMn3YA5YWN?= =?us-ascii?Q?m2gJGesrIgutZFRGxIAulvKLFRN9GPW2hG0S7nPl5GfhU4+q5ZA9b0nE1OT7?= =?us-ascii?Q?IyOQ6PgmZoMNM8EeSE7PXnk9xb4GwDuGJZNCjAxpT2/2QuzW/C8GnjbnOiFA?= =?us-ascii?Q?Sn1pXi7/051bgAdsILIx4WYMD0CRRegRJHZNVlZEgYSpI+fAhfhYTkvN7PxY?= =?us-ascii?Q?JNrSUbE0IB0JEts892UGSWZ8coTZgfcXtFKVZnG9IHmHKd2XjjFnZ49MzqI2?= =?us-ascii?Q?BiAIR4EIPAsxoUv/H2AbIjYvSo3/KNGdGS/37CSolGSK7SHR4a0vGT+R3NvA?= =?us-ascii?Q?Pw+PSDFTvwr5I/mWB2jMBcSm651trLcQ+HckqII3dSKMo78ktQ2FqgA+khmz?= =?us-ascii?Q?gJn+hLhOHhtRC22EFt+ohK0c97XCDQFFh89SzAvCVDHWOXzMk2nXyiA8paNy?= =?us-ascii?Q?G/xMiH0Gx+hl87/x5jyIOZitRR7SEhSr4BvwAJczOA0b+E+8GNq3hTVXu2U8?= =?us-ascii?Q?EH6LsPa8W9YBAXCW6YYXsl2LG98OALq4h9Wy2i50mSxD6BAzQikCqNQZwVyU?= =?us-ascii?Q?3pgj26HigV4pC88yHUU6uH4L496uQ/rRscD5kDluHnwjqwQ/IbopVZY/PLbD?= =?us-ascii?Q?Ln/RA5c1QVTOJ1UMW3HO2AOXWp8dB5cdoHXPyh0YnoCmsK0/0Rao9EQACBGh?= =?us-ascii?Q?wNrYmW9yKVCnZyUSIpzV32vmfrhcwB1sPAYFbuOuaQtO6x06xQwi8rFKjmAC?= =?us-ascii?Q?yJIYeSzUXdLETV+l8SoM8P35Mk6h+2LteydwD0TjzYt3QqJZt6DbkTalIvkm?= =?us-ascii?Q?1NQENeqpxuQTraHQ1xzxc0CLJ93l6L3Lf7xtm6afTET7M5huH515Z6bEqMd1?= =?us-ascii?Q?yPPMefxuNhzlkohvlDj6VbEuLgJmdYFWH34F8ly8bRZj4ZmC3/ctdduWuZeh?= =?us-ascii?Q?uW+ZNftEs55+6igWMYFvxeQVXYdElU878M8EuY+HUKbmjUaKbocDATItefxO?= =?us-ascii?Q?9l3Yl/RQRqQBG2Byuexp0HLjIiraYThqvd8GMAoNvBsLJz0H1i3tGcPW+Mt7?= =?us-ascii?Q?6xuM9hncMxz3dYmB/3TrdxM=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75bba585-d4fe-4fe7-5f7a-08db72305ae1 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2023 08:20:21.2762 (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: V+QLxQNFajkyXL9BPLCsyocx36qd6BoUW3DBDeJ5q5xdBywnowl5YhJhaql+wsEwCt5AEMkQ3mmjpsYQ8FTcisd6FZ1ux028LbG0lRXW0iw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8422 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe0d::711; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-HE1-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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1687335708293100006 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: Denis V. Lunev --- block/parallels.c | 65 +++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index d507fe7d90..dc7eb6375e 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -944,7 +944,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; @@ -1026,33 +1026,8 @@ 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; - } } =20 opts =3D qemu_opts_create(¶llels_runtime_opts, NULL, 0, errp); @@ -1113,10 +1088,40 @@ static int parallels_open(BlockDriverState *bs, QDi= ct *options, int flags, bdrv_get_device_or_node_name(bs)); ret =3D migrate_add_blocker(s->migration_blocker, errp); if (ret < 0) { - error_free(s->migration_blocker); + error_setg(errp, "Migration blocker error"); goto fail; } qemu_co_mutex_init(&s->lock); + + 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_setg_errno(errp, -ret, "Could not repair corrupted image= "); + migrate_del_blocker(s->migration_blocker); + goto fail; + } + } + return 0; =20 fail_format: @@ -1124,6 +1129,12 @@ fail_format: fail_options: ret =3D -EINVAL; fail: + /* + * "s" object was allocated by g_malloc0 so we can safely + * try to free its fields even they were not allocated. + */ + error_free(s->migration_blocker); + g_free(s->bat_dirty_bmap); qemu_vfree(s->header); return ret; } --=20 2.34.1