From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866159; cv=pass; d=zohomail.com; s=zohoarc; b=elYDNHaFp5bf6/IzjHLu5OfrF3PNbmP64JY6Bo2MsT1B/5228PqVbKL7rjW5zgwNLDxvWRAUbgRosOxZ9Y63wkIZhg5hiaeM3acyECpW4Gl0h5Xoa/VBh3Z6mtjNesnblBg7QOcyHbkQPaRU6nOMhw8fy6sb4vC4zn9c+Xzwd2c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866159; 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=hngAEev1nxwNGEj8FBZJ7ONnW4yWK2eBr0gvAaO7spQ=; b=lRysg9v19pbPucuhPbAQKLPbhh2LAv3em84k/OwbeQxqfgYcVxQoTgU1NDdbbD2AutgyAvN8iCHLAhVnOFo9TwGalsZ8SLIavgcY08cLoymDtHah2uQZMwNFpUPBEaqBrFZnWtUpiYU4P44iU5E/F+/B8ujFVjuEd6h5A+eKXSQ= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866159481552.5339025879595; Mon, 24 May 2021 07:22:39 -0700 (PDT) Received: from localhost ([::1]:50262 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBTa-0000jG-Cw for importer2@patchew.org; Mon, 24 May 2021 10:22:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40478) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBRv-0006bK-DK; Mon, 24 May 2021 10:20:55 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 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 1llBRt-0006l3-58; Mon, 24 May 2021 10:20:55 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:46 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:46 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j1rUCHDOJ7/n1GsJ+ymdzEigqu9p7ysQM5m69rej4zoZ810s7BbTvwYjrWuVArXDAhrhnCfsB+QLSxILi99X17wrkPDffmtW38LPdC/CdzrFyCvyCIlUJ5MzwRt9K8Y2apWOov7JXtUhf6GOzfnNIRkdvn0/6F1EOrokjwEnIbtUUZ+bqisrxnW1pqtwCvg8jSS7K/AHE8m2bvm4nl2yXx1cu9d5oaKAZb2z7d9Ycp31VUUB842r1XsYtiMvcDtfJoY5TufEUrc0v1uATVOc1vA1AqhkZqkOSRSqZj+QlR2j6zoQLLlpx1hX7KaOytcci2Dh4DKyrsQtPIovboKWEA== 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-SenderADCheck; bh=hngAEev1nxwNGEj8FBZJ7ONnW4yWK2eBr0gvAaO7spQ=; b=KAW9MZAaHy1m2uk7zadje2YY19CY7PzdOpEzGUaGeINq28AaqvlYSZ0YEASPuNIKDeTi7J6u7L8lzZew1z7/w9gxd6lMglV7trxp0QiLAZLqPY689UkeVhBH96VlDW9YDMgndiDS79loal9TucJYSdWA/OEgZYV5oHXjKGOSvd4CJKAtO3hCq2HkJfqlebr9XqMWc1ke4vF6e/ND/XeMOYSd+ze8gijkHmi0/ls8Hsby5nhz8rU5TjW1SV+v2sTJcdAvCMjFREcKQAwe4qy++LNCgPelRL7nqumpU+2uWDXMTzYWr5XmR1SdsS3A6El1Eop9aVke7rPa3RXSbShAaQ== 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=hngAEev1nxwNGEj8FBZJ7ONnW4yWK2eBr0gvAaO7spQ=; b=AlXvZ1yAD2s0hoUi1G5KkI1YyImK+4c/T4Q9tfN9D5oyFO6/zpWDsosbYweK+cVfuFNTnRY5yOeE+HJ5X1FoqCwyd0yUXmrAcp0QQfngrTTe0fIRTC+wmjodhV2ipQ6pHlzwYtGiRbTENdTLgskYJfdu8fOyv0ccAbmowrpKu+o= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 01/10] qcow2-refcount: improve style of check_refcounts_l2() Date: Mon, 24 May 2021 17:20:22 +0300 Message-Id: <20210524142031.142109-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 878c28e9-d224-4e19-94c9-08d91ebf1edb X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LC/QVLrEc6ztuU6AqmfPRawsrVWUQHTrG4WPSks9SOuhMebgCoDcKchOcdS4tUbAKLlbgYzyz4pBQ0x1Y45lvqwFreQ2CNSzLQF+JUOLJXOMye4AUSR9DYPWr0rsAcEUhVGK6arvIweWFIfS56oDqR20GwrIThv3J9NydlQcllliv8w8wsqLS1/0g5wq58PFgjjiNCzt5FQ3EQQuviLavg+/nv4Gz9Ugr+8OOBwvuFAwlsdAcHWrCLJqv0MARz299sS7sVx/UNV+sq+m1TvhXIyuG+TTY0TLS7K4Q1DT9dKUYooreM1yOaPZ9Xd36D66oCjYgB8fN4k2ZOWp/F8u2kEYXLX/KC+i3rjqbVfmcH1fYAvp37J+cxVzcNTuamQ23cOa/amFlIa9K5HyNRyeGoWwlfMrDrPA5qJWqGmY2LiWaZPJuHfNaogLu4fwMBD38keyHThJdylvxGJgxxfKmOE2XsBkQmoL3OkX35HZ+OCgHV2C8zCCz7X23hWA7Xca80ugk76nq5v+CLE0uL83u2c2Vpb1LiMEDxD457NciwM+I3WLzFFgo1UapnmzV7K4qIAz/CROVjNP4liBT6fKrsvu6344D7FVOzdFF98ZUMao47fJYpimKISwOicvSsXtFqOuGwjTFqVWGtjvPvi0hKcPjNH30zK99P0eyhgrLLMeEAYcde9sVt7QrJYxGEq6 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?/gsUAJ+zT865DKqttwE651mKxwWGbDH17rAIKECrhc78uXKwnfakO9lEETvT?= =?us-ascii?Q?nOTf8zLq8lcoE4I8mYZhZ1PoQugLDYGeofpdlvoiyFxqX6eTguzO5wefUgNV?= =?us-ascii?Q?sKBPaVbEF0RLbytee9YbiuaiEykBWPhMkPI2tVRloQ+BF02vxBlxVNndjAbr?= =?us-ascii?Q?ltsh2MhMDfQYIqQaKgNl++D5G7FSHRQ+mMhWvE+ffpXFrxYzI6nNhyTP11Xo?= =?us-ascii?Q?hFc8JpTHXW3t392csoqRROHOtkTYHtDDuGgX8AaCk6OhIgLPMp9rr1U5u0rp?= =?us-ascii?Q?P0efxFIdwobrlNLQTdsEMhvKE19uYO8E78T01L4Dd2ka6SXOmmpjrBV8CCr5?= =?us-ascii?Q?hHYtp4wCJFhY7KxkasUuepB4Pzwk3gTk/+LSpsmCOILhXG+XO0oPd5CkpDHz?= =?us-ascii?Q?DeA8JAz0uunK/yxDOOKKFzs02y1ilwFAPvaeP75yHY/htIk9rxcaTK3mMcva?= =?us-ascii?Q?GY925xCJ4tpCZNqlMesZXzfT/ORlU+ZMrq+mP+3dd+4WKUHk0bBgOInPAy+Q?= =?us-ascii?Q?lUkWZbZfTkHO10vYU2o7SmALLwUqJm2zrUfvA4Su5q7Um3G1eRh7VgzdZm9P?= =?us-ascii?Q?c+6dU9lkbRx/OVD3R9N/0n1svaWqmjr74S4nAgkzXD94/AFEXhs4v1mffgwE?= =?us-ascii?Q?6w6IpiH/E34bUMwe8+RwG0qaUMNnSXG9v4jD2CYgGYv43Zrt967hfFFw3rqt?= =?us-ascii?Q?2SaryZaGCrSy6uMQXmttZiuCyXJHFoA0Y34+coAhgy97X7ZCNBS3nsuadquo?= =?us-ascii?Q?vHlxsndoJk+aYbTXH3KpPmICln0EVLRxMK2SHV5Vnmq9rJmFCU8d3kqCW8NJ?= =?us-ascii?Q?aDHhKJ/5+xeAsreOBCBxIbCQMa1ob0JJI3xrlvcutbn2j/2Xa3c+DXy9BbG/?= =?us-ascii?Q?mGqFrCb51IxHyqu/87OGQo0VyEhqdcr/vpQYXtP4DpoMmss9AoIMbBDs4tsa?= =?us-ascii?Q?otnQiFZxJUN2Yb4EMiT2IkAIMtU+H6dR4bkGtb06Uoe8p5axdIWoTwzFmuf5?= =?us-ascii?Q?Wux4nWWwJC3h3f/Mg6GZqkFDLca4pMjQ9edbRH9yk9LwUwfzVMPLHh91Omry?= =?us-ascii?Q?2le02levoCLycluad8boxpvGXxu27U8+POA37iBTGHwYiULq4YH7DMhPqml9?= =?us-ascii?Q?h5nUoTO5WUSH1SjY8fR7Y8F8ZcflxJXEBZZTDKSWJMqlBFC9hbJ19Z7mOL16?= =?us-ascii?Q?kWHjeDFnZ3w+5SS4pI054oTrZhpcAKcRe+iG+wvq2MbaDc8Tf9LS43id25Xg?= =?us-ascii?Q?Pj7TJ7TTF+33zG41jKt0iaNOXcHPGJ8GYnuq8U9P3d4D8wJjPlzThPXWxtzb?= =?us-ascii?Q?cBdn9Un+wplyiUEg6XHqRLgf?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 878c28e9-d224-4e19-94c9-08d91ebf1edb X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:46.0744 (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: IzvGG8xa05n6OI2Db9x6ZmAR3Zar7vbY4cQov+x+IL3Zxmk7yuxQjb6kO06wwHuSQz0kE+bi2LHFK4dd5vJsZ9a/ZOW5UvEvoRAjmP3ercg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.7.122; envelope-from=vsementsov@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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" - don't use same name for size in bytes and in entries - use g_autofree for l2_table - add whitespace - fix block comment style Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/qcow2-refcount.c | 47 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 8e649b008e..2734338625 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1601,23 +1601,22 @@ static int check_refcounts_l2(BlockDriverState *bs,= BdrvCheckResult *res, int flags, BdrvCheckMode fix, bool active) { BDRVQcow2State *s =3D bs->opaque; - uint64_t *l2_table, l2_entry; + uint64_t l2_entry; uint64_t next_contiguous_offset =3D 0; - int i, l2_size, nb_csectors, ret; + int i, nb_csectors, ret; + size_t l2_size_bytes =3D s->l2_size * l2_entry_size(s); + g_autofree uint64_t *l2_table =3D g_malloc(l2_size_bytes); =20 /* Read L2 table from disk */ - l2_size =3D s->l2_size * l2_entry_size(s); - l2_table =3D g_malloc(l2_size); - - ret =3D bdrv_pread(bs->file, l2_offset, l2_table, l2_size); + ret =3D bdrv_pread(bs->file, l2_offset, l2_table, l2_size_bytes); if (ret < 0) { fprintf(stderr, "ERROR: I/O error in check_refcounts_l2\n"); res->check_errors++; - goto fail; + return ret; } =20 /* Do the actual checks */ - for(i =3D 0; i < s->l2_size; i++) { + for (i =3D 0; i < s->l2_size; i++) { l2_entry =3D get_l2_entry(s, l2_table, i); =20 switch (qcow2_get_cluster_type(bs, l2_entry)) { @@ -1647,14 +1646,15 @@ static int check_refcounts_l2(BlockDriverState *bs,= BdrvCheckResult *res, l2_entry & QCOW2_COMPRESSED_SECTOR_MASK, nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE); if (ret < 0) { - goto fail; + return ret; } =20 if (flags & CHECK_FRAG_INFO) { res->bfi.allocated_clusters++; res->bfi.compressed_clusters++; =20 - /* Compressed clusters are fragmented by nature. Since th= ey + /* + * Compressed clusters are fragmented by nature. Since th= ey * take up sub-sector space but we only have sector granul= arity * I/O we need to re-read the same sectors even for adjace= nt * compressed clusters. @@ -1700,9 +1700,11 @@ static int check_refcounts_l2(BlockDriverState *bs, = BdrvCheckResult *res, if (ret < 0) { fprintf(stderr, "ERROR: Overlap check failed\n= "); res->check_errors++; - /* Something is seriously wrong, so abort chec= king - * this L2 table */ - goto fail; + /* + * Something is seriously wrong, so abort chec= king + * this L2 table. + */ + return ret; } =20 ret =3D bdrv_pwrite_sync(bs->file, l2e_offset, @@ -1712,13 +1714,17 @@ static int check_refcounts_l2(BlockDriverState *bs,= BdrvCheckResult *res, fprintf(stderr, "ERROR: Failed to overwrite L2= " "table entry: %s\n", strerror(-ret)); res->check_errors++; - /* Do not abort, continue checking the rest of= this - * L2 table's entries */ + /* + * Do not abort, continue checking the rest of= this + * L2 table's entries. + */ } else { res->corruptions--; res->corruptions_fixed++; - /* Skip marking the cluster as used - * (it is unused now) */ + /* + * Skip marking the cluster as used + * (it is unused now). + */ continue; } } @@ -1743,7 +1749,7 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, refcount_table_size, offset, s->cluster_size); if (ret < 0) { - goto fail; + return ret; } } break; @@ -1758,12 +1764,7 @@ static int check_refcounts_l2(BlockDriverState *bs, = BdrvCheckResult *res, } } =20 - g_free(l2_table); return 0; - -fail: - g_free(l2_table); - return ret; } =20 /* --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866159; cv=pass; d=zohomail.com; s=zohoarc; b=R61dv0T9fTU4lH5VVVVMPBL79eUvXgmeGSwU2oYdkj5WYjU9qc5426SB9GICxiAUiuGWM81LgjphEMqCkyMyDIBeMG1vXHX8Y28rGWGuH3sFAbBiJWijvUh4T1/WgA8jxLlDAO5tpeZleorMKpnYCHjxo5TnwqvJ9+z6hww6tYk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866159; 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=1ozwcWJK3aqKVEOEne3GdIscWecGJNjVW1O7F8ZCZfY=; b=ZEL4bND2YtUyXMZ4CMIKWCNC1TIoxA++h025WtOiLWbZPxkaf6mzl6PNLzVSclI+DW120PWrwmvZRoQ9KE2EY1kmYIOzimyOoXoP+7isbnYS/feU6GL2LD1zzwBe2nZc6W/K6Gjxncr0sUIbj39zQoO0CP3KkVeRS6kSFTB4Ovs= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866159469338.08604209985003; Mon, 24 May 2021 07:22:39 -0700 (PDT) Received: from localhost ([::1]:50286 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBTa-0000k1-Cz for importer2@patchew.org; Mon, 24 May 2021 10:22:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40538) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS2-0006mU-R2; Mon, 24 May 2021 10:21:02 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-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 1llBRz-0006u5-4A; Mon, 24 May 2021 10:21:02 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:47 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:47 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EEGyblvuyK3kduPnBWwaYT3T4a/HBhgzXwLB5qV+6orZSIPy+K0XNRfOc/vayJHdSKwe1gzAHM2Nb75OV8Iymksb3znvGGWTiivf2CcDvZTHYD99+z61Da8eARkyseGKeFSZhxR5AmAOwcWw/7lL+wQ/fAgOotnQhWD6Ox+b/JD50P5hLj2xvlgREX3QSDHmaZCoL70kMeJl0m8V205lhld5Y/7lAc+0RRvoOFPWdM3jIlfNQqcGxa1eoue7g19NTQOoSiEdS8fSd9U00P4vki84P5EH4lr9I9yS8IPSy/NjgKQqky/1PIZU83oJXrXMbnHdbWsqFMm+EhsdQ9lhUw== 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-SenderADCheck; bh=1ozwcWJK3aqKVEOEne3GdIscWecGJNjVW1O7F8ZCZfY=; b=oQiIVJwIVaHY2a1opYwA4Fhaxh7WyXAxVw/3SzPyVZYDrKJAI71T+XA0SQQxWjMlFGSGfVWRxIosiKqjaWr3gkEXrN0gMBF0klAdZivxY3EwZu4EnIJQ6JIUONvmzC672Ul+vJgzOGiAlLQ8w49m8T2KW/aFMbSw7o6Mgy4sgcGtbItvCJPX6J50vvtmMLeF3trHUTnHL4fOSvrZpx9sRm/otnIuL9SQTHRCUomvMGIw+J/YO1Lax+tZOkA4SUf4uhip2FgglBI7o0pO2GkHqqDqvEFpCWERykqudbrH5G2eLDT9CNZ7UdMkoUBSfBzn6pt2C7oEQ+F81E0z75i5yg== 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=1ozwcWJK3aqKVEOEne3GdIscWecGJNjVW1O7F8ZCZfY=; b=bbZJZLSzZjj1l1QuyTvR47rr/ukVx9kxE0vxNIRlFZkt7NhbdniG6OZVBXeD1nWZt4ikCwwsS3IR2kc0ar9GVXbtyv3WTsYWA0B4Dx4AxmruFkdpHWryjhMYcSo9MuUuvC1xk7H+R0x7SWU8Ozoi0ezW1/KECykw6F3uF5T4znw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 02/10] qcow2: compressed read: simplify cluster descriptor passing Date: Mon, 24 May 2021 17:20:23 +0300 Message-Id: <20210524142031.142109-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 36dc45eb-3266-4d60-59da-08d91ebf1fce X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1775; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HjhDz67yDyImnbQA/aJRCiQciI06AM9Ie0G2F7iEnV8c5LGHLvKVRvUt45xeBB3XWirEBNvwdeZoWRGScptYgNNJqi8JsqQoT1d/ONzpgOg7s3NCNFnIzHTw1Jz37UdFRunC+jpIpBPOa4gwzCIwQnc8/lR2riRgwrHbq6Gj9OGRT68A5BvymSkFoH6jSypPwP6zhtYBnbKGIkvy8QitrZqwjc9c6qtOWUc1NA4ZnqID9vm0i9VI9wjOTkcIDngffQQRsGbmm5wSJ/u5aHINILzlF/eGjuguCCT1bmLkbAQW+v5BJCo4TEV+vwzq1s1CuKOAh95tgz+G7fQEF2EgDdYQbQmPhQs9TZyGS5k0P+QLDgklQlxGxTjBwi5AeRP1cakZwRigEqXoRihOdLCV1i9uXu4rlRZUdozTsqvyJJlSczaX/KcJ5ZiT0/BrtGqBKTyEdTAJbytjqfyemTTkMP2TkhJFWIxn4w5npCpJ7Shrg/zjg0PlgeRRecm7sg8V41VZRSUNe++8yrbC2/xt3+0M+AzQcjMvpEJnbRmU0ppsVU1jYmPqw0sgJjwTUJks/8g6pmDVFfPfR+jUiQUARPRaFrJJfTJX8qR1utBI4H96v1mubHdAzOs/6wl6YhE/sE43mf2XC4dyyhcNa5xNw7s0J0P7P6PLfpi32CxIppKBRY9ILxd23w0mB0TOVRJe X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?A/udOuVEquEcrAgft+nVF+TaoxxkEKJ/6UiecY6EN7Uncx+g2680ounA9bo5?= =?us-ascii?Q?9M++CH4rPf1GhysGGgbQw3Ezz6IX62xFWt3Jy3DZTsMAsweM8oAnnqOF9R98?= =?us-ascii?Q?ZqjXQqBt8D5y/kFKFA1qaglqmqQrjhbi3aKQ/wmUVOSK8S25V81g0eQ+jUsC?= =?us-ascii?Q?dYB9WH2Th6DSTckrdJEUgRg95hrwSjuHIArliLCxEbwnd3zGApWSuiU4RCXZ?= =?us-ascii?Q?zWIC2ho5uiwAu+wAXQDFq7eK1y0OYcpQ2clA5po3KfgGhEa9uH0hxZutivCw?= =?us-ascii?Q?3U+NhnksF+XYXAEKM6WwTpbzYwquRKZ6djSoQpP2Hd4yFmv4yADUYhnKsoMP?= =?us-ascii?Q?DbAc6k1Xt6GjaBp+4z6Bg5V/6Iom1Ku0r1NOtBVTi5ziL6N1F3Rd4vIcULPo?= =?us-ascii?Q?k7nn7SNBET2hmpCQvHRcSPE1fV3rDpAkf1OfcUuzr6wc/8IOKY1Ti5SLY4t4?= =?us-ascii?Q?c7voA+Ul/kPrpeYa1MFNdou/81W8qLfD26SbTyRNHWd8s+nyvZv0M561lrZT?= =?us-ascii?Q?OH0v1AtBW7b2HBbhKwC7TCN32iSv3hwSixODGBpTNUDdIrTF0sp103bKCdsM?= =?us-ascii?Q?EP76d1sTX5hgeyx0LtCyd2j+7231uoKWE5N4EyRoK1A5wK7YtgznRGy3Xwxh?= =?us-ascii?Q?Gh5PKQKM0OOCeHd8pU5D2bYiziNMJoiUGzYcfOY3oAnrIgdVv3DoHXG1Zvtm?= =?us-ascii?Q?NEe7qWT5IXoLDrZ9GoQyRtEFS9NpvO/BjOXF06WznAO7i3mlkkB6N8dTbYv7?= =?us-ascii?Q?bUlY+z++Mmkft/fjmbXFzITPXkL73IRB0aFp5svdRcAMtky3C6D62YM2VB2f?= =?us-ascii?Q?aOVCF/iLvHxihfhQPVNMVM+9/GNM34v+QRxYOLdZJJOSm4wFagHvFE1Eqccq?= =?us-ascii?Q?LU8yGWc1CcAJgaGM8YTuP4WTF6R4VSOgeFzGpQZ4ZVdNpFzuzb6lAJWL/zJW?= =?us-ascii?Q?nYdY4SlXz6EocSwPGlffEt8TRlVhaC8+Dvimm6vjwmbJ7Z1CrORc4eTPYpxm?= =?us-ascii?Q?4uXTrF59yt8Rd04asc6S6amYEJP962I8IwngbaJSrgzdxTHqvVyyFEs/SSrj?= =?us-ascii?Q?KChCbdOPTX/yH/zVFeKtIISavM2Ws29xfgh87aH40MRa1VZ4PjNXN5NL/oal?= =?us-ascii?Q?RhcxPWNxulUyPcIaxlBV75hr9F5STtcLUdTbrXE7mWNRLBbSfQoLCG7Nnd8V?= =?us-ascii?Q?O8wN/uUNK4QhrRrgBOhR4HuwERo5KeqQhgT2XusrUkJTIBQkiCMu2qOjDhzL?= =?us-ascii?Q?H5cfCr/86vvSjlvieZ3FYRHCG8VrrNX2u/7qvRz+fKGVgtkMo2VBpylgARGY?= =?us-ascii?Q?p0WybMiabMwwK6ZYw5PmEokw?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36dc45eb-3266-4d60-59da-08d91ebf1fce X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:47.4802 (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: LM69y/ko+nPkjN7+6HyESNUruWC9WixtmfnFqPD72ztWfFERc4Q/QWLIQdgyDOlKQnhURydAvb7x7pzP6MSGF41BxcIqZLcTtcoOkUQ7L64= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Let's pass the whole L2 entry and not bother with L2E_COMPRESSED_OFFSET_SIZE_MASK. It also helps further refactoring that adds generic qcow2_parse_compressed_l2_entry() helper. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Reviewed-by: Alberto Garcia --- block/qcow2.h | 1 - block/qcow2-cluster.c | 5 ++--- block/qcow2.c | 12 +++++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/block/qcow2.h b/block/qcow2.h index 0fe5f74ed3..42a0058ab7 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -588,7 +588,6 @@ typedef enum QCow2MetadataOverlap { =20 #define L1E_OFFSET_MASK 0x00fffffffffffe00ULL #define L2E_OFFSET_MASK 0x00fffffffffffe00ULL -#define L2E_COMPRESSED_OFFSET_SIZE_MASK 0x3fffffffffffffffULL =20 #define REFT_OFFSET_MASK 0xfffffffffffffe00ULL =20 diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index bd0597842f..04735ee439 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -556,8 +556,7 @@ static int coroutine_fn do_perform_cow_write(BlockDrive= rState *bs, * offset needs to be aligned to a cluster boundary. * * If the cluster is unallocated then *host_offset will be 0. - * If the cluster is compressed then *host_offset will contain the - * complete compressed cluster descriptor. + * If the cluster is compressed then *host_offset will contain the l2 entr= y. * * On entry, *bytes is the maximum number of contiguous bytes starting at * offset that we are interested in. @@ -660,7 +659,7 @@ int qcow2_get_host_offset(BlockDriverState *bs, uint64_= t offset, ret =3D -EIO; goto fail; } - *host_offset =3D l2_entry & L2E_COMPRESSED_OFFSET_SIZE_MASK; + *host_offset =3D l2_entry; break; case QCOW2_SUBCLUSTER_ZERO_PLAIN: case QCOW2_SUBCLUSTER_UNALLOCATED_PLAIN: diff --git a/block/qcow2.c b/block/qcow2.c index 39b91ef940..b3648f0ba5 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -74,7 +74,7 @@ typedef struct { =20 static int coroutine_fn qcow2_co_preadv_compressed(BlockDriverState *bs, - uint64_t cluster_descriptor, + uint64_t l2_entry, uint64_t offset, uint64_t bytes, QEMUIOVector *qiov, @@ -2177,7 +2177,7 @@ typedef struct Qcow2AioTask { =20 BlockDriverState *bs; QCow2SubclusterType subcluster_type; /* only for read */ - uint64_t host_offset; /* or full descriptor in compressed clusters */ + uint64_t host_offset; /* or l2_entry for compressed read */ uint64_t offset; uint64_t bytes; QEMUIOVector *qiov; @@ -4665,7 +4665,7 @@ qcow2_co_pwritev_compressed_part(BlockDriverState *bs, =20 static int coroutine_fn qcow2_co_preadv_compressed(BlockDriverState *bs, - uint64_t cluster_descriptor, + uint64_t l2_entry, uint64_t offset, uint64_t bytes, QEMUIOVector *qiov, @@ -4677,8 +4677,10 @@ qcow2_co_preadv_compressed(BlockDriverState *bs, uint8_t *buf, *out_buf; int offset_in_cluster =3D offset_into_cluster(s, offset); =20 - coffset =3D cluster_descriptor & s->cluster_offset_mask; - nb_csectors =3D ((cluster_descriptor >> s->csize_shift) & s->csize_mas= k) + 1; + assert(qcow2_get_cluster_type(bs, l2_entry) =3D=3D QCOW2_CLUSTER_COMPR= ESSED); + + coffset =3D l2_entry & s->cluster_offset_mask; + nb_csectors =3D ((l2_entry >> s->csize_shift) & s->csize_mask) + 1; csize =3D nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE - (coffset & ~QCOW2_COMPRESSED_SECTOR_MASK); =20 --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866313; cv=pass; d=zohomail.com; s=zohoarc; b=lrh8t4pP7tvXNb34dDrsBuGYB1/qNlRYB8CAzg/u2NfrlzmJzbExHifRCtniISMa7nj5QSrEmErs5ehf3S9y3O2CCBuscvrq3LNYwZseOo8vx89N+6tA0euKRp3Z7X/DZQuHi7nD0THsEw1u+uLsV7l52VEMitWMEC7B7b8ekUs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866313; 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=DEUqkGNrUiwYcaPCn13RwWqYVXY9FDS0noBTJhwBoRA=; b=QuusmGXWE9Hpw/9/aDSiWewHgQIwc5HwTioNRLPf/ChY+HYHMy1kz9NS9uEoEF+LS2n/kz1m6TBXG8N4PIObvORuuGPYuX+ivSlBlYFNsmFt4hdKUD8a+RXQ4eefDfpmJUKLt41BN+Fqs/A3dUARZF58bDLPLdTIcp9lwygvVeI= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866313118528.5398451142978; Mon, 24 May 2021 07:25:13 -0700 (PDT) Received: from localhost ([::1]:57014 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBW4-0005Ld-2l for importer2@patchew.org; Mon, 24 May 2021 10:25:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40508) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS0-0006h2-RM; Mon, 24 May 2021 10:21:00 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 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 1llBRw-0006l3-5q; Mon, 24 May 2021 10:21:00 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:48 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:48 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SYu8tClf5gH9WK8rl6mglPZ2FG21eG+ktsgHQyuqqsxg+CiLiuMEjq9xhRgzojrpGOWVnvHjGGWP6xpRUQMP0gy6/FUQ00hoTmPXBczYipu/vKxcUezFL7V2i0Danzk828xmr3yURuy8qYyOpEcU4CXS9eR6dPm+G5Bm0e5MNalu22DcWEF89TByJdZ3qnA47/Yuum4/Zp4PeV3qhlFAiMKWrX4cJEAVHobkrHocuseja+eP1oaewcqfn88k+KAqgYazIlE9lbQ7w0e7VrQrZIY15eRfsyRTm9j52c0yfSDOIxMM8cXek+a4f0+TzeCmer449lBkM1a9hL7HQyzOIg== 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-SenderADCheck; bh=DEUqkGNrUiwYcaPCn13RwWqYVXY9FDS0noBTJhwBoRA=; b=Qt6tqOp3PdbQdX9DfjGb9raOR7Iwh2YqMBV/S5KLLSWKmbQHyYT/owDA2aPk2Ws1jJMFqorWAC1uF2XTHNa4Iby6gwdafgaT6rLnCjGW1uY9QQcRRygKQlkqIhRBwb+T4tGZVd+3/uOHqtFApSIFM/06o5aCHTs8cXTQbWsQ2hnso2hKGz5qmYIFyQJazrV4KBH+9qmX/kLBByAwZtMn7F1Y2hCo0oQbL8ZQfcxVWNepV/eF+r4/4JIqsbthSV+CsXEGvII1osg8menykBQfu5cw0zzdoqCxgiYV64DyyXXQzOFr4xMgY/3CbPuQrd/EbrTzWwxa2UiNQDjOyV4edw== 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=DEUqkGNrUiwYcaPCn13RwWqYVXY9FDS0noBTJhwBoRA=; b=aqtED7hUtIXwQU1nO9Bjcy+SjNeKlCw3wyFJDkL4rDAXtWWx2hJAfuHSJ/FkYRdAWMYQP4Qw5o8PdvbdTjm7Aur8R7Y1AkRtJXLabqPsilsqzBTRZSjX0cXkQQCDFyZMvR6OXk3j9v0wv6txHMrhtR4CQ05F7YcK26S8vZfMyWU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 03/10] qcow2: introduce qcow2_parse_compressed_l2_entry() helper Date: Mon, 24 May 2021 17:20:24 +0300 Message-Id: <20210524142031.142109-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5eb62270-5809-4e7b-3e7f-08d91ebf20ab X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1107; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KJ/WRuJ43ukO/W7yVqL1jFWqa7otPpTazjLhWeAVXLgqQjULfUzIdWMMAtcvec2v/pe96Ndlik0okHyTqI4QjU9udbEFqb+ya2/zJxY1LiVrcurUMHiWNU5IIqsPH/3CzQbXa3UghqTgi8EMYPgI5A/H2gpXIsJ4hMjYP/TM4e0R/42L7N7XRCDP058H4S8o84su0sMWVWMdJ6ANFwi1yy63xQXp62HgXUc1nkDUYJSVGYhJuNca0BELJLalRr3ZzgEWrZmPc9q8Xp30M6q67QsrM9IvuCOpUCTTip+DbFXVJqv5vtwO6CgNbz1pBoJ1KvkvtAECVaoITVhOdZzMoKF+cn9e8GkoyimYvzX08tVGo5Uib0C+QTcG2adOICOoJJaDFOrxyNUC69NGPGSavUQvPzBtf21t2k45Kf0we14GAR4cXHy7FjjVHElCHyiriUxBQOLKs1wg4x1YL3C+fuSfGXLC4IIrfXJ6MK5n025mi7IJUQ3BptTcicMys/GfhyJAW09ry35KYN89f0VatyAkJeVBajGuDyAodsCliTeJZ46824CNht4u4XYzueLUnK5HTVPYo3gkFZPsO2nwlDDoltUlumkJiOYbpqiMJKBxKQllgweHn7Mpjy+H2XuBgDwAoulrjPon0Xc0Ysw3mmfLd6o2Ot/vM5wDS3fPyKt08HO2EaMcRsTiocDcSPtS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?DLwLbKWpEZ+SlpWNpBs05bcQy6uBkqj9l2Xfi95Ykuf7Bfiqn2sVcyYlAlec?= =?us-ascii?Q?Vu7l5/wtOeHZu5bRCYv2rZwScFWlMWzTXgNL/wzLObMqzxwaSXT8EGw1MLh7?= =?us-ascii?Q?mP77X3x7tKH9wVakiwKyFXwXLMt4JV9NWWRb+fCals3dd9cguNQRJEqYlyK7?= =?us-ascii?Q?f1yT2i144Qw+WAu1iUITNiOTQ+Q9FEMLQGiTVgzrPHG9hGynS+Rombr4kQdx?= =?us-ascii?Q?Rw8JSV+0k/+18L5pR1eeRWSVDzrS6gHrmZaORuAGdGr+FsyzAj6/Z4MxbsME?= =?us-ascii?Q?wOR/pcBleR9CeWVgYhKgsXooXAQsQQyvJmpMh8s0kTi8GUhO28kwtICsB4rh?= =?us-ascii?Q?HhP5h3Lsvnq5OqNKJpGL0ckb9KXP2VHS8huqeBfCX1VHkUhQo5QTAL56aq7v?= =?us-ascii?Q?Ush3WLGvk9OxBKXRDyPxUsBSfD7Ve+5hdiWJ4tWYlCGSLf5dk5dXomF3bXL4?= =?us-ascii?Q?HuU+nefAYVcCqc1mlBv/w7C0YGPayFrK/GkoTjA1m79kVccEj/LItfl2sUGL?= =?us-ascii?Q?BZQiExxN3PRCM5zfDdA/bXKCEEGHCMGLhqqbhQjK0rNXT+Njz6nbu+0R4G4V?= =?us-ascii?Q?egQX/Ap7ic2EwPUEKWvvKQDw4yC8sCjoE9OW2dVI2gOzDa4qAge25PSNmd/x?= =?us-ascii?Q?S/qLlOCEDhT7mTqMkUxex+Kg/ITeNg2byrcecXGJ31lmGk46Qmd8MT062qOW?= =?us-ascii?Q?qsI0YPsSVw6QxhEp0RFyNRTH8vFxtLanIwaPnO3ynCYJOw2EBNzPMYkThjPD?= =?us-ascii?Q?EXT5nP6umLIlAtpU35QRTpceC8H06oX3V6FPUm5Zu2kc/zLy5IzL5+ps1NWw?= =?us-ascii?Q?tEDKjgLm8xjgI7UHKwhbYFbqtpUa+EEylqMMp9peqh0M6BxPych0Nx7i3zkT?= =?us-ascii?Q?rvFwpm7/tbMqCDcb4aBFeiJOj8caly18s8oGmPGTskSqBEFI2EOZVLdM38MD?= =?us-ascii?Q?XogFiqwpadW67lsdNapX8rVqFlVXeXYJCK0DVhrs1pmKyaXHEDKyShQ3161a?= =?us-ascii?Q?E+FgpbOIlmsWj2wYU1RSkiP9lgf5AtggUghKClavWNOFvuOCTE/FbECJG608?= =?us-ascii?Q?/hOC/ubp6JGQtUS6LQ9EKJam3UvEgNMTjtXSurGz+IrFOSkJOHQgH+4+uVGj?= =?us-ascii?Q?0EOY88WvK5tbRLpRrvhiWEOvbJc3Zju7rfkZL4X9lepHnqX9eqa2429MsJkz?= =?us-ascii?Q?tAdCCFc/T1agDFPhVAqqi7dur+3ITZggL43Mq5QaStdaHJU7sTX36Wm/0es7?= =?us-ascii?Q?D9dV/czRQZ3Cw+yafcnRTShVktp1z8SBOd1iWaoEKFFolg2bNZC/LPBn4iJ+?= =?us-ascii?Q?eVOATBnd+CthITm3ochQsbFA?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5eb62270-5809-4e7b-3e7f-08d91ebf20ab X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:48.7128 (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: Ay8VbO5HMovbtey3NDYwFGxbtoGMnBzSHgik1P7bIrR7g0Y+ALZl/EFpt1URK6nxPacDdkFZcB1iepjJAKtiq5UpvJjWKRAOhFetKpy2iO8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.7.122; envelope-from=vsementsov@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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Add helper to parse compressed l2_entry and use it everywhere instead of open-coding. Note, that in most places we move to precise coffset/csize instead of sector-aligned. Still it should work good enough for updating refcounts. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/qcow2.h | 3 ++- block/qcow2-cluster.c | 15 +++++++++++++++ block/qcow2-refcount.c | 36 +++++++++++++++++------------------- block/qcow2.c | 9 ++------- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/block/qcow2.h b/block/qcow2.h index 42a0058ab7..c0e1e83796 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -110,7 +110,6 @@ =20 /* Defined in the qcow2 spec (compressed cluster descriptor) */ #define QCOW2_COMPRESSED_SECTOR_SIZE 512U -#define QCOW2_COMPRESSED_SECTOR_MASK (~(QCOW2_COMPRESSED_SECTOR_SIZE - 1UL= L)) =20 /* Must be at least 2 to cover COW */ #define MIN_L2_CACHE_SIZE 2 /* cache entries */ @@ -913,6 +912,8 @@ int qcow2_alloc_compressed_cluster_offset(BlockDriverSt= ate *bs, uint64_t offset, int compressed_size, uint64_t *host_offset); +void qcow2_parse_compressed_l2_entry(BlockDriverState *bs, uint64_t l2_ent= ry, + uint64_t *coffset, int *csize); =20 int qcow2_alloc_cluster_link_l2(BlockDriverState *bs, QCowL2Meta *m); void qcow2_alloc_cluster_abort(BlockDriverState *bs, QCowL2Meta *m); diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 04735ee439..70d0570a33 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -2462,3 +2462,18 @@ fail: g_free(l1_table); return ret; } + +void qcow2_parse_compressed_l2_entry(BlockDriverState *bs, uint64_t l2_ent= ry, + uint64_t *coffset, int *csize) +{ + BDRVQcow2State *s =3D bs->opaque; + int nb_csectors; + + assert(qcow2_get_cluster_type(bs, l2_entry) =3D=3D QCOW2_CLUSTER_COMPR= ESSED); + + *coffset =3D l2_entry & s->cluster_offset_mask; + + nb_csectors =3D ((l2_entry >> s->csize_shift) & s->csize_mask) + 1; + *csize =3D nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE - + (*coffset & (QCOW2_COMPRESSED_SECTOR_SIZE - 1)); +} diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 2734338625..66cbb94ef9 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1177,11 +1177,11 @@ void qcow2_free_any_cluster(BlockDriverState *bs, u= int64_t l2_entry, switch (ctype) { case QCOW2_CLUSTER_COMPRESSED: { - int64_t offset =3D (l2_entry & s->cluster_offset_mask) - & QCOW2_COMPRESSED_SECTOR_MASK; - int size =3D QCOW2_COMPRESSED_SECTOR_SIZE * - (((l2_entry >> s->csize_shift) & s->csize_mask) + 1); - qcow2_free_clusters(bs, offset, size, type); + uint64_t coffset; + int csize; + + qcow2_parse_compressed_l2_entry(bs, l2_entry, &coffset, &csize= ); + qcow2_free_clusters(bs, coffset, csize, type); } break; case QCOW2_CLUSTER_NORMAL: @@ -1247,7 +1247,7 @@ int qcow2_update_snapshot_refcount(BlockDriverState *= bs, bool l1_allocated =3D false; int64_t old_entry, old_l2_offset; unsigned slice, slice_size2, n_slices; - int i, j, l1_modified =3D 0, nb_csectors; + int i, j, l1_modified =3D 0; int ret; =20 assert(addend >=3D -1 && addend <=3D 1); @@ -1318,14 +1318,14 @@ int qcow2_update_snapshot_refcount(BlockDriverState= *bs, =20 switch (qcow2_get_cluster_type(bs, entry)) { case QCOW2_CLUSTER_COMPRESSED: - nb_csectors =3D ((entry >> s->csize_shift) & - s->csize_mask) + 1; if (addend !=3D 0) { - uint64_t coffset =3D (entry & s->cluster_offse= t_mask) - & QCOW2_COMPRESSED_SECTOR_MASK; + uint64_t coffset; + int csize; + + qcow2_parse_compressed_l2_entry(bs, entry, + &coffset, &csi= ze); ret =3D update_refcount( - bs, coffset, - nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE, + bs, coffset, csize, abs(addend), addend < 0, QCOW2_DISCARD_SNAPSHOT); if (ret < 0) { @@ -1603,7 +1603,7 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, BDRVQcow2State *s =3D bs->opaque; uint64_t l2_entry; uint64_t next_contiguous_offset =3D 0; - int i, nb_csectors, ret; + int i, ret; size_t l2_size_bytes =3D s->l2_size * l2_entry_size(s); g_autofree uint64_t *l2_table =3D g_malloc(l2_size_bytes); =20 @@ -1617,6 +1617,8 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, =20 /* Do the actual checks */ for (i =3D 0; i < s->l2_size; i++) { + uint64_t coffset; + int csize; l2_entry =3D get_l2_entry(s, l2_table, i); =20 switch (qcow2_get_cluster_type(bs, l2_entry)) { @@ -1638,13 +1640,9 @@ static int check_refcounts_l2(BlockDriverState *bs, = BdrvCheckResult *res, } =20 /* Mark cluster as used */ - nb_csectors =3D ((l2_entry >> s->csize_shift) & - s->csize_mask) + 1; - l2_entry &=3D s->cluster_offset_mask; + qcow2_parse_compressed_l2_entry(bs, l2_entry, &coffset, &csize= ); ret =3D qcow2_inc_refcounts_imrt( - bs, res, refcount_table, refcount_table_size, - l2_entry & QCOW2_COMPRESSED_SECTOR_MASK, - nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE); + bs, res, refcount_table, refcount_table_size, coffset, csi= ze); if (ret < 0) { return ret; } diff --git a/block/qcow2.c b/block/qcow2.c index b3648f0ba5..56a69b26c1 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -4672,17 +4672,12 @@ qcow2_co_preadv_compressed(BlockDriverState *bs, size_t qiov_offset) { BDRVQcow2State *s =3D bs->opaque; - int ret =3D 0, csize, nb_csectors; + int ret =3D 0, csize; uint64_t coffset; uint8_t *buf, *out_buf; int offset_in_cluster =3D offset_into_cluster(s, offset); =20 - assert(qcow2_get_cluster_type(bs, l2_entry) =3D=3D QCOW2_CLUSTER_COMPR= ESSED); - - coffset =3D l2_entry & s->cluster_offset_mask; - nb_csectors =3D ((l2_entry >> s->csize_shift) & s->csize_mask) + 1; - csize =3D nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE - - (coffset & ~QCOW2_COMPRESSED_SECTOR_MASK); + qcow2_parse_compressed_l2_entry(bs, l2_entry, &coffset, &csize); =20 buf =3D g_try_malloc(csize); if (!buf) { --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866299; cv=pass; d=zohomail.com; s=zohoarc; b=M5G3MHyt+QvshFmHzrVgCFfr6ERmFeMHl5dBO8dlQVokL7p66qnRcqioszB+oUG1BYj5+du9KIc07g23q5LqLquKHCBR2LIL/wgu3KbN4O2w6V6u/RAH0VLDGnSzKVhyVWaI8PJ/RUCKyds846H5T4GSc6vOhNMrkj5QGQnx+pY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866299; 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=RZ5wxpZjo6CWp8sO9JbQAwX3ht0ArKOrRW9o8GTApMU=; b=AhkXeD6vnvvQn/PADqNhcbmZ4pnotrXEUBNNme3Q9Nk0Fuk+p7NbKvdG8DX47bb6WB/8aCImNGYd6BZ9lXbZusPQvFkLH/9/aN3q5n5Ab/NUSvYcoyaqhbs22R0+CNGmz7TsMGGpz2Rm4ic022nXusgpegduEL1A9vy37I1hkas= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866299706364.13707594754965; Mon, 24 May 2021 07:24:59 -0700 (PDT) Received: from localhost ([::1]:56936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBVj-0005IC-N2 for importer2@patchew.org; Mon, 24 May 2021 10:24:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40544) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS3-0006pj-Oi; Mon, 24 May 2021 10:21:03 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 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 1llBS1-0006l3-KU; Mon, 24 May 2021 10:21:03 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:50 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:50 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h42hG0BBmIn7R4DZ25yZli4zUdmNayPdJngmFRhbvyNl7SLHDYJHGUr+8vkB6t2iuMRQRx2818B7Zwmffj+21LIKWRCY+xorsE7t1JUYJRsmOemshO4IVY18233A/bIQ5JYO9D2OMb1TxlO3Vk2RCJlawnMAZWFHPM5KNwhs9YElVQtn6fwePkXMkK1ZJNCXnYQ6mIJaMPlbFnneXplOfWRPlxf4K/U93wnKPemuSrd6lGPE2WilJtPBDI/GgGW9AhM2lnPPa8ozQDEP4GzcswSR3sDZcDwdkh8cMiTA46cMqShrR+PM+aP2QHjRlvj+bRncbouuhXY9eAq/UpHjqw== 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-SenderADCheck; bh=RZ5wxpZjo6CWp8sO9JbQAwX3ht0ArKOrRW9o8GTApMU=; b=ZTTdGmaohXOYO6XRUnGgZhl3q15k+7KIeu9PhrfWmdmUuOQCaab8iK2ubGFrxQ9JwOe61ePzwYTfV7zbvN2iI9Zj2MGtNVlCCj5hNKfkgurXa8237OdwPs7zjSfFASCVRlcebH1F6LC81EymKxXpUTkDo4PapKdiQKEfYB2vb3Q114Slao9/HsuodDU1HXvHxymSO3fmYEuqDrMCRC98TLKV6jklDbi33phz7w3HbQuuHz3CvOw0DMvOIaUFh8i4oz9zQf4nflxlbntV0Y18SOE8CMV4KJIm5Oki3rd3IMlCadsN3vmgUrwtm2N+w9sRyVevSzKUr5vKNr2SM/GDKA== 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=RZ5wxpZjo6CWp8sO9JbQAwX3ht0ArKOrRW9o8GTApMU=; b=tHR9/H7WWcFnXWs66mVZvHQu++OMgjZpt8x0YPxiLgicrYcA8DL+2c3cInFCy62G79zDDj5G9u/BIlBKxeV/5+v8lWRqnqI6dfcG68TdL5wNdwBzg632RJ8DRRGNimQ/X1g3d30vAdkw8tJJWUsMEXxPJM7kZdoyRan+3r82XGw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 04/10] qcow2-refcount: introduce fix_l2_entry_by_zero() Date: Mon, 24 May 2021 17:20:25 +0300 Message-Id: <20210524142031.142109-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 23dd0b0d-238b-48c9-fb63-08d91ebf216f X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: alJblTzhZGec6gLmPw9UlsjIY1U76ciwdgPm7JqxBwfCtnwf9ExPU4xKUO2XjN6PGFBmdPf7747nw/MobDnDUaKOkElXCPWYV3gLsPxVsq32qD95UMECANHkJNW6ZmyExTTj6QTCaN4zLlhNQPsyCOTpPJgesnZBC7aWPtptryrDaMetx5a9dipUEkdg7AMkOimJbACoCjI+WYRsAwgX4FMXOBg1fz8O+IZ4qG6Jvbnv8DVfuf2FRP6jGudvLAbsrx0Vs0YS0A28Jn1crnSLduui7XUZ2AvpmGhUPc6aKae5SUWN5cjpxI7EYT79lAoELrYQQxFQQ5vIJe4r61F7HECLdI9fZGMUeVetgxBjlZ9Z1ax3mqByunUXow8fR8UvYKrBwMCJTSO/SqLx45r1lVNV/cKvneLFE1ibF0dzRA8Yp7iG1Fnp/wWaGbkMpC9G5c1fo5up8NXL20nrTVfKaqn/33/GVjSoQaInI4DOPHonXCrIV1VdwQxW3kLba1Ps4IcwqyD8Sc8mt24uS8F0xl9nTOPlc78h3YbPAjQxQ4tlRng5iSk5HH7bpHC1d9qOD70HkOFARcEAKqjFigUI/sum9GVLlYYeDSMCdQut9Bg4VDcfIYk2adk4rYhy4KlSCblQrZTWKrWJwaR6XLKWvQzQilO7FeyDi7/PK+ND0MBy46X9sZkPHU3cwQsyapP8 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?pWk/50c/eIp2tJ5TT7eRYeIVHSKbh6BFKmz7if2Wb5JQpwOLQAcdd7OXdNWS?= =?us-ascii?Q?if9uC61HuyZf8Jy35sLdItBquUg0FJ4NnDmr4Lmr9usF4TJdC0YXA8eNPJZI?= =?us-ascii?Q?k6efVAnVOsMGRPk6klobIGbCtCERxXc/Ng9bn5BzGpALDG2UAGwYr0wFbZv8?= =?us-ascii?Q?EKAEQrfLbQgcdhw6F1k/ZQXwzSiydXBYLi1yEEC3sKuyK1CLRI4KL9PbaI03?= =?us-ascii?Q?bc5+Z8TaEzGFXaAYqF28ydf/j/qrb1y1M56aIgsEKDFTDofnpG/3hEg21DB1?= =?us-ascii?Q?E6G1sX6tIg+cxZtVwj0+vi+qkvDvqCUgPcE1b8VQ18fMXZvkfFQ80GjJ4ZXk?= =?us-ascii?Q?wXpc+EIXqQrFJsWHMzL3ffIYJs3NiENf7c+6dSzwEjlgHG5hyFh02+wTh1eQ?= =?us-ascii?Q?KA4j139BPIqWzIqWgZTLAt5yo3ky6U0hP7Sk1OSVBSYKwvAQO3qVb3FNpHMC?= =?us-ascii?Q?A2z3gbOJZV9ZimY5eNUJlcRvEQlIHyBtL6+iOWUeckN/5JvyPBG/B4T0iYh2?= =?us-ascii?Q?Pu/3pgr0/Nf95UYZRV5y7mEnH6y1IJm9EPSoGVUT5JggV6Sf+RWbgfxOMcYR?= =?us-ascii?Q?5T+k3UHiUmgqtdbawjj+qHyAw1TOkRHJJ+7SD/NB6YI0un1hudMnGIvcJZXk?= =?us-ascii?Q?eVrKvdxRAAHVZV5bBrMQ4MEpnO6sBWuvUwNYZg+8pW4bGNs+Q9LLETex8/1T?= =?us-ascii?Q?EGnDX0AUJPQn9vUe6ycUfACLmrD77GoV+J5CLmIpsu6TQiMjfnZXWesjxKCl?= =?us-ascii?Q?Yc/WwVOHZ6Vrwsu6k4mZ7BSDSW/6jTHca//0YZ3VPBYPPxXQ1EJbk05x4yKW?= =?us-ascii?Q?3jlE68CxuE7lBHl9Ed+90p6X+vBloPX2n3A8eA2ZdgF5hop75eejTaQXjGef?= =?us-ascii?Q?i4ODN9MjEs2/6dOolR7DHE+epbuJZBdeT22D6oh4Cj2tVr73CF46bTeZa/q8?= =?us-ascii?Q?YWVpmTD4Zqe2j6IESRc+xdZ4BEc1MTwbVvKyJFDdfJfS3BwOgWZuxMV6ukuc?= =?us-ascii?Q?7zaXcEYjDBLCQt3oFHr2b36xz2vaik1peWErsN9aBSWN7z9pD4LiMZOpBLVp?= =?us-ascii?Q?LyaBJWQF0JQq2ZafBD/NwTBfe96RaBjFPnLi/RIpqKFoalBV5Lqd2FaftMxa?= =?us-ascii?Q?0yai2epgJPbnZcoNCpa0SsnxR3JdQa+K3w42TmIgwuBfvHZivQk5QG2zJ5RL?= =?us-ascii?Q?OpIWQKTOf+3UTSEYhspXhzwEgEUlAGThNVwIt9cZcQlFVeaGeSE/0O04HBuU?= =?us-ascii?Q?lGeBFhqPEqZ2VxLgCB00/wCikmOYRv2j7JHjhmnbwYBfh+rfTISsWSacsny8?= =?us-ascii?Q?pHqARsHIvVxqfrnwDms/Ndkj?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23dd0b0d-238b-48c9-fb63-08d91ebf216f X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:49.9842 (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: vp8H0yvbQ/dkXnjxeOYjgEhtyc1zEaGFsfvyiSUcS8Rt6KGY/qaHtk03FNShRp6Sw38XVEkhzpCi/AeoNoMMsP5orAYJbVQG8cSSOyIxuZk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.7.122; envelope-from=vsementsov@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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Split fix_l2_entry_by_zero() out of check_refcounts_l2() to be reused in further patch. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/qcow2-refcount.c | 87 +++++++++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 66cbb94ef9..184b96ad63 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1587,6 +1587,54 @@ enum { CHECK_FRAG_INFO =3D 0x2, /* update BlockFragInfo counters */ }; =20 +/* + * Fix L2 entry by making it QCOW2_CLUSTER_ZERO_PLAIN. + * + * This function decrements res->corruptions on success, so the caller is + * responsible to increment res->corruptions prior to the call. + * + * On failure in-memory @l2_table may be modified. + */ +static int fix_l2_entry_by_zero(BlockDriverState *bs, BdrvCheckResult *res, + uint64_t l2_offset, + uint64_t *l2_table, int l2_index, bool act= ive, + bool *metadata_overlap) +{ + BDRVQcow2State *s =3D bs->opaque; + int ret; + int idx =3D l2_index * (l2_entry_size(s) / sizeof(uint64_t)); + uint64_t l2e_offset =3D l2_offset + (uint64_t)l2_index * l2_entry_size= (s); + int ign =3D active ? QCOW2_OL_ACTIVE_L2 : QCOW2_OL_INACTIVE_L2; + uint64_t l2_entry =3D has_subclusters(s) ? 0 : QCOW_OFLAG_ZERO; + + set_l2_entry(s, l2_table, l2_index, l2_entry); + ret =3D qcow2_pre_write_overlap_check(bs, ign, l2e_offset, l2_entry_si= ze(s), + false); + if (metadata_overlap) { + *metadata_overlap =3D ret < 0; + } + if (ret < 0) { + fprintf(stderr, "ERROR: Overlap check failed\n"); + goto fail; + } + + ret =3D bdrv_pwrite_sync(bs->file, l2e_offset, &l2_table[idx], + l2_entry_size(s)); + if (ret < 0) { + fprintf(stderr, "ERROR: Failed to overwrite L2 " + "table entry: %s\n", strerror(-ret)); + goto fail; + } + + res->corruptions--; + res->corruptions_fixed++; + return 0; + +fail: + res->check_errors++; + return ret; +} + /* * Increases the refcount in the given refcount table for the all clusters * referenced in the L2 table. While doing so, performs some checks on L2 @@ -1606,6 +1654,7 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, int i, ret; size_t l2_size_bytes =3D s->l2_size * l2_entry_size(s); g_autofree uint64_t *l2_table =3D g_malloc(l2_size_bytes); + bool metadata_overlap; =20 /* Read L2 table from disk */ ret =3D bdrv_pread(bs->file, l2_offset, l2_table, l2_size_bytes); @@ -1685,19 +1734,10 @@ static int check_refcounts_l2(BlockDriverState *bs,= BdrvCheckResult *res, fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", offset); if (fix & BDRV_FIX_ERRORS) { - int idx =3D i * (l2_entry_size(s) / sizeof(uint64_= t)); - uint64_t l2e_offset =3D - l2_offset + (uint64_t)i * l2_entry_size(s); - int ign =3D active ? QCOW2_OL_ACTIVE_L2 : - QCOW2_OL_INACTIVE_L2; - - l2_entry =3D has_subclusters(s) ? 0 : QCOW_OFLAG_Z= ERO; - set_l2_entry(s, l2_table, i, l2_entry); - ret =3D qcow2_pre_write_overlap_check(bs, ign, - l2e_offset, l2_entry_size(s), false); - if (ret < 0) { - fprintf(stderr, "ERROR: Overlap check failed\n= "); - res->check_errors++; + ret =3D fix_l2_entry_by_zero(bs, res, l2_offset, + l2_table, i, active, + &metadata_overlap); + if (metadata_overlap) { /* * Something is seriously wrong, so abort chec= king * this L2 table. @@ -1705,26 +1745,19 @@ static int check_refcounts_l2(BlockDriverState *bs,= BdrvCheckResult *res, return ret; } =20 - ret =3D bdrv_pwrite_sync(bs->file, l2e_offset, - &l2_table[idx], - l2_entry_size(s)); - if (ret < 0) { - fprintf(stderr, "ERROR: Failed to overwrite L2= " - "table entry: %s\n", strerror(-ret)); - res->check_errors++; - /* - * Do not abort, continue checking the rest of= this - * L2 table's entries. - */ - } else { - res->corruptions--; - res->corruptions_fixed++; + if (ret =3D=3D 0) { /* * Skip marking the cluster as used * (it is unused now). */ continue; } + + /* + * Failed to fix. + * Do not abort, continue checking the rest of this + * L2 table's entries. + */ } } else { fprintf(stderr, "ERROR offset=3D%" PRIx64 ": Data clus= ter is " --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866423; cv=pass; d=zohomail.com; s=zohoarc; b=aBIKQVLrKZzuZ84/dYCS3n3LZ4ADHZ1ar60bPH3dBxhkEbaDeCGUzLpqNqoJhSsg/oNKlFeeIZGB4vpzin68PdbE6DaSQmnCOPXzbe4R/aUyOv0IsFgY5wa9ZOzQmJ3kTRLAOH0F91hLkkUJcPMftoylXyDg6l0CR2LbbPYEK+s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866423; 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=tJSAqSMQChtTeR2gMDl2jR+cz13jXFGwW7pDat7i1tE=; b=jrN9/j0AONz4vJBp3OYpwaJWyAL5UyipVlANRlvpxTgNnwlIStMxCPizIyVbJqjD0iSam7cDPTthqeN1eRCGr1zaC+OonC3Wv1siaX5PLNj1uUS8HPVO86tXBAjQuQP/lSLWRCJCk2GxognL3irrud59/kRCLdIqG5I1tanT1vQ= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866423879905.7806008870773; Mon, 24 May 2021 07:27:03 -0700 (PDT) Received: from localhost ([::1]:36290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBXq-0002BI-UU for importer2@patchew.org; Mon, 24 May 2021 10:27:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40560) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS5-0006ur-Fa; Mon, 24 May 2021 10:21:05 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-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 1llBS3-0006u5-IX; Mon, 24 May 2021 10:21:05 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:51 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:51 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZzlsOiRzYNFDtqeKMcvnmGbaDXIbV3aLZU2TIFudiu8pOUaftGpz11t7j3lt/SvK0bJqAjuZK5VzLN1QdvBOmcgHc0FbF1jLMwvH7HuvsPVzfZ0msSxfexEcHDdYcn8sC5mX3dnyqVVm38cEekRsJ/0rqJUjOE0C0qyD8qnum9MLhYE467lGswiBWMM16FtJH8mXOgkJjgfZZboa4Rltwulzw0k/9NCohz0YdXUWd9pZRExwVU3BKYu1HIt+N1gBGtx+qwipzko25EALxrDwCWGLVGD5xvMR9diDnYcCWlSH15PrUzOQNZnDW7acL37B8zi7dyXquq4UMjM9XrYxmw== 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-SenderADCheck; bh=tJSAqSMQChtTeR2gMDl2jR+cz13jXFGwW7pDat7i1tE=; b=eCHcnP/8N8ymMwIrxd+GwtBb7+DSzl5oEl+m3VTGIgG9RGF78ZnCtwkbGFGbK6wKINkhSrB+LzY4BasJ/UYKVgv4ts9zzkvd+7b7BNFCDHxXxfYGV2nbcd96izuSDNbcYZWzHr+C/pjlZQ0wzjQcrokB0SnZx8il43YETrSASxyTKPjsu6dh5VDpT5+L0I3WJIzrVKkgwf9mcJ5J30opdqwAA8ouPdPSPC61ryfP4jNA44XY69YA+9whS+HHsLMR6ktuoDKLoBCmB5fi/Ce6rKMEmQNJUczcfVNZsKUmMfMF0uQGefaQr7LEoLjD8gA+ZS6Mu282s7N8zeg8sgLr0A== 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=tJSAqSMQChtTeR2gMDl2jR+cz13jXFGwW7pDat7i1tE=; b=hnDGE+1pqqVIfPOUBGLUacjl+tvTow7L7f8sBKRw/c7GOVLB7sRWjcoVg3ktKeG1EJ8myKVzgIjTsfwlrUiZoenzKb7GLwjmcI/nXnURuiGZlmmWUDsqaogFRqmRrEI5JbhQL8ZD9P3IZMAjd/p3iSuMxg4mj2BZnMeTv8as9mw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 05/10] qcow2-refcount: fix_l2_entry_by_zero(): also zero L2 entry bitmap Date: Mon, 24 May 2021 17:20:26 +0300 Message-Id: <20210524142031.142109-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4c1419b7-6adf-4d78-4fef-08d91ebf2224 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:136; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LgKOLtNdS+vIklbQErQid2shG87fytFurz4wsawchap/LdrqW3xAAkkwJRkinfO1/4ODygPdya344nr6SJtu1VeBFZJrxgso8XM/YPkmXUU2TGFBxggBiI4UTv/3qFzIqQwrTYR4DY6CdSmszRyOYqCfE/GMrTfzlo+wsK0wEDfHpqZH40scCUCcENL+87/AfK7jxVv/Gz6EgX7ysz9fiEBTerk01vppAJoxx0H9Pr71kH33+e74scCuOww5gyb9liQ7DQvgKzVRiYDvG8AsSn3iVmy9mKR1X+B6cFe+75ZA4l5ZBhJ37zUontBrXnRaPCAOomworXej4MbI1+1mgoUKpAvOTvisUUhk9D7juHzr3A+NIv4O1/evjOTYNPaq/F80/jbUY41++88J9GYTZdMngQPM7eYoHFenTjRH3og+flsblbqoOsYnOU36/bH3pZEQQIVPU6ahAigxXxpqOUubdFzTu8nDsRH22JzlmAklpal6rVxP5S2wGq8Ry5IOqRrpgNJvSpFbth3jSwuMQMrXDl46IgbPsuXarwcPEaQ1VIKGHIEXs+Mbud+iyr8TnAFGC4xlY1G7IJrkQnEx2K1W6XSg16PFGLJG9EvC0GT0vXCOHNTxyPiTvjB4lKGEBsNh0HhcWPN71bjAO6LS7vnF4KR9gDDRcG1JEfeqwAMto08RK6ULnHsS04/Tu1YS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?4nurqiv+WZCm9RH6osSjDZMGbdLn9gZABeURWpq9HUg17yh1VBu/tzPRhF9Z?= =?us-ascii?Q?fzUJs4Um04JvelNPmlnfefRFebL3SmMhJ6MoeX/QZPagB54MXmhOkSKaZZBL?= =?us-ascii?Q?usoONCVMwpPozgXvIy3hd32IAdZQ2IFcbddW9ZyrqohkAobNHoZaMu5u2wQW?= =?us-ascii?Q?2wBvUIEItFPLHh0ssg0NxQUNmpbZHD+mRivUqD8+zV9+H8eG8cLcUc39KDJd?= =?us-ascii?Q?2CmiZoO9xqu2WDMiGx+b7IZ4IOlGYx1bPj99AM1pgRruPCAo1+0VSwVCcayL?= =?us-ascii?Q?SIx0YOFmEhEeB+5Kk2XFcTO6vLMxV5wAfBZmNdZ+8F9x/IaKKV8fDAX8xLF8?= =?us-ascii?Q?aI59WwC350YagblAjGBQbHJCJ35DU6s0wMqUxMqTKkJ7vj1wPDIdEjWg/+QO?= =?us-ascii?Q?2CJUgwAHVRiiZfRIJYMOUXrQvh7VH5GPLCeT5klhshDimKwocP/nAKZ7c0X2?= =?us-ascii?Q?OaBOTrL44fI6WHfDG88V4mqV7mSwpMotLTMl0adrB2Ua2XKL0kiub61EKyjl?= =?us-ascii?Q?h7MLbhPhPywpYk0ZqfqSYwQnYlXkx5cQ23XZJxksUcQQjUHE3/SXGn/PQEPZ?= =?us-ascii?Q?F1o9Ms9QpRmRdVn82/vjO9+DlpZPmeHsk0Ss7/mMANZPZMxdr4iV3YDYCI7J?= =?us-ascii?Q?NgCK+47HQyYh8sm+EPrEI1PGgzSU+/nQg5AikqgSKlyE4JDoMnWwQlxHDRtr?= =?us-ascii?Q?wVwQzSuwg3evoXcLgLMTga1ilcE/H5bg0G9ywF2MTMD0ZBWJIn9QG7eQjI/U?= =?us-ascii?Q?RS4WNN9e+9r3IKvViHz5t8STaTWFst4Krmixk9X5M7/mP4tUmTBJ9yMYe4LU?= =?us-ascii?Q?F4jTDxSZekM1IKRhQoTZyFoCtUkmcXUN+h3MgVPHAvKlVbHsGlGjGuUGJ9lH?= =?us-ascii?Q?anPQQnVoK6KQxkgk69AisZhKObiPsiyvFDGb3ezkPCdZMtay1FGmaa62g64I?= =?us-ascii?Q?jYkkOOF6hIh7YOUpapSVxQc8npDB6R2Q+n53csqvXHXfwW6csx2k8wrbUaQ7?= =?us-ascii?Q?gLmNtnBZUT9DBmveJrN7OYgIir4zV+2At/Wod1UKL2uGvy3Chu2hlDCPJh2b?= =?us-ascii?Q?T7YbwCzZbe9sBe8kVYiPw4M/McECsArYpU9yQG+TdO6yyhzz0t4pN4lYNkCp?= =?us-ascii?Q?Nch/LIp+g3cfKvi8Wdux86h0R6fR8nj3AwddKyZdePzvT6GI2bi8azRHhDqy?= =?us-ascii?Q?rYsuhPS+GWeVkc1mNYiIi8OWZn9Wuy/NpfRRALq2mlaWzlSb0AXRrcCkgYK2?= =?us-ascii?Q?wuBCFiNnw3iaC0hpLxK2TsfLxGCuSgHZ8pkl9F8eA2bfJSOCWjLAmSyvrV1/?= =?us-ascii?Q?8mw+vSD9d3TKyd828o87esur?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c1419b7-6adf-4d78-4fef-08d91ebf2224 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:51.1262 (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: 5OviRoblf6S+ys2uMjIfaZaB/ixChuCPp4R4Z/RRk83LIfi+E64Nn6PgWKiaeseqG2x44zYmw3S7pevZhIicbxoTijRWixBN3xx/jsbZLE8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" We'll reuse the function to fix wrong L2 entry bitmap. Support it now. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- block/qcow2-refcount.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 184b96ad63..f48c5e1b5d 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1588,7 +1588,8 @@ enum { }; =20 /* - * Fix L2 entry by making it QCOW2_CLUSTER_ZERO_PLAIN. + * Fix L2 entry by making it QCOW2_CLUSTER_ZERO_PLAIN (or making all its p= resent + * subclusters QCOW2_SUBCLUSTER_ZERO_PLAIN). * * This function decrements res->corruptions on success, so the caller is * responsible to increment res->corruptions prior to the call. @@ -1605,9 +1606,20 @@ static int fix_l2_entry_by_zero(BlockDriverState *bs= , BdrvCheckResult *res, int idx =3D l2_index * (l2_entry_size(s) / sizeof(uint64_t)); uint64_t l2e_offset =3D l2_offset + (uint64_t)l2_index * l2_entry_size= (s); int ign =3D active ? QCOW2_OL_ACTIVE_L2 : QCOW2_OL_INACTIVE_L2; - uint64_t l2_entry =3D has_subclusters(s) ? 0 : QCOW_OFLAG_ZERO; =20 - set_l2_entry(s, l2_table, l2_index, l2_entry); + if (has_subclusters(s)) { + uint64_t l2_bitmap =3D get_l2_bitmap(s, l2_table, l2_index); + + /* Allocated subclusters become zero */ + l2_bitmap |=3D l2_bitmap << 32; + l2_bitmap &=3D QCOW_L2_BITMAP_ALL_ZEROES; + + set_l2_bitmap(s, l2_table, l2_index, l2_bitmap); + set_l2_entry(s, l2_table, l2_index, 0); + } else { + set_l2_entry(s, l2_table, l2_index, QCOW_OFLAG_ZERO); + } + ret =3D qcow2_pre_write_overlap_check(bs, ign, l2e_offset, l2_entry_si= ze(s), false); if (metadata_overlap) { --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866446; cv=pass; d=zohomail.com; s=zohoarc; b=EtXWc9uz+yZkAKD1AbliQpFe75xMMkqPz+7Q3Yo8BPWC+Oaej/a/qieojBXFqV4h6OnebZj3mPBDhuGVpEcCBn8uaXx1oP4rF7dyuJ4kGUlbvVlV5t4a3kXXcg/OWQdkTHKSrx3ymjSIjPQ2t7yRd8zreRZ2zggJgNoLiwoNzQI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866446; 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=8uIOxITwxhggvesR9LxaQVjj5hrQdYiD4V7SN/sbqXA=; b=V+NYfrqas/EvKuoMPUb+1MfDamF64KsjA0qMRNWOZGvnqP3PBx5heDsvoyhe0J/3BnQL9P60yB58BuKcMyQQYHf+wt13r/Zjsq1XcJLV4O3CM70g/RitMgcSccU/aVe2aXGXniWmeCk2lsckPmxJ+eOv1r5zo7aghD7B2mT1fmI= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866446537582.5136925722356; Mon, 24 May 2021 07:27:26 -0700 (PDT) Received: from localhost ([::1]:38164 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBYD-0003Ox-FM for importer2@patchew.org; Mon, 24 May 2021 10:27:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS6-000716-IT; Mon, 24 May 2021 10:21:06 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 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 1llBS4-0006l3-J7; Mon, 24 May 2021 10:21:06 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:52 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:52 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lyxPk77bfDRy8DZXtTn4E06NdhtrF4Nkk2qWDIq0KAqvsr/nk+zYZWS9ZPB+sGMq2saZ/6UMnySA/+XJ1tAVrK80VRzuw/DjbL3QhuNS2seSUjMUxoof5n24qkZ2fWJJZxhTJKFJUVrjgeDQQKdX2GY5e77KWYbAJLGifct20HiAB4PXkQMUdyvs69mP9j7f2S3NJQ1yVdpP8bmBw/FipkjzdKmbFgcq7ypUdoc3ADdhE7smZTrRwfe6UBb/Fap/l0TN/90cs8DMlwkVmVNBoOplbIF5X2kmfRpMuFE4if/q3VzIylqmW223NaajKgeKdWJLjTagTb/FjiyVzUs+nw== 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-SenderADCheck; bh=8uIOxITwxhggvesR9LxaQVjj5hrQdYiD4V7SN/sbqXA=; b=N6rrYH3lr+M+L5GIHXkDgWgxU+bkYxXQPKVG7TV1Z1eTenKsCg2omuH+yafua3wJHbJRDx/JouybUQuJWWQlVHc/gKifSEGuXWvwmGRTcskSME94vj8AJ5NI8A8T2hw0rgYzxfzSy8YBTAapuXusyCnbBzjVK1d+g8ML6OZctEVTmH1nXEylFEnv4mrW1Uee0eTTzlYC93EjDxHwrRlF6LDn4vqNvm4cXMy87J57bo0UmtnFRCdOZaicZbAXtywfcRYpnklUo0RO6Uwws8K0fpqHz82P21jlrGELQhd6mFADQLzT7DfofPshh0V601Jknv2E+IJvvdALIdrsNDhHng== 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=8uIOxITwxhggvesR9LxaQVjj5hrQdYiD4V7SN/sbqXA=; b=YA0mh6xdAKU3Ip2AUipsOlbvESPSiw1poJR6/KI2QqdroZ7UIFnCdtHZ4enAUlEbEY5g0flgUaOp0Dgr5sR3hha2NxyD69kTF9TC0MZo8y2SzPFyWCu5ZYMt5sfXqW3iW5It7wYJeKjD3SuwnWGNKXV7DmIa0nvwVGs3nmq+/Qs= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 06/10] qcow2-refcount: check_refcounts_l2(): check l2_bitmap Date: Mon, 24 May 2021 17:20:27 +0300 Message-Id: <20210524142031.142109-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d1d544c2-560d-44d3-a76c-08d91ebf22d1 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:389; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +IyoQBUlPPx4mjRF7gesO3+ICH7FiDo6ywgUmfcCYgO1jCRcpRS+qRcpOsFbyXXmQbpizwePsjHK51s1VcACNGG5Lqyf8C/PwpgJ6+TBZQFN9/8dPdR31ZOaujv2IWwGUeggWoZqgcmykFk3rpMeYAPSa92QhOcUL7v1sozBv6GadLxnPHWiUcbuh6uH71snae0+7fRSnvLKb3o7mN8MxLMPNJ+6+PwmH5SYwISqgjMCqdvKdKV9/Tr6ISg7DYTAhf1CTcCpBOebrjmq2OjdBLmOas10ScXrci9783uaiDzxeud9AV4MQb04Y5KNb2hLelL6PNe8eRuk5Bro695ubFEIDR38lg7Wa1MvHk4GW0JaLi9auBxULZcTH3oyXGrm8686KnPDgr/SD+8Xla69ZZinM/kR2odGN0jrRQwRcuAb0iaX2d01vf28Ff2vE5gf8o2lAMzRxRK0vaekvC/tDD6cVASGg4XsaWvFfvtyniaY1nCnqOhCJHVopWI+Jwmgtcbn0oQg5Trk5j5njfqMpOh/cQftuK2KszPLzhW0qJGM2dK49jI2hGDduwe6ayvlqU/jl2r9mNuGFurkyFUpLpofYdE4RqMaXusHk4aW32t2gvoZSr0GyXObLhby6AOK0md173WQsiMVrrD/QDG3vDXn7vhfeCS5WeUViz/bSbY2pPsQWPpE97I5UJoGbAo2 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?1lMT4iQxsgbF4yKqKS8BRJ1z8BqcsuGr9yIXKYfGK4PSSm83VjtXeooTAbf5?= =?us-ascii?Q?MlDfWujtzWs5Evu2EHMQvq421nx22Sjd38juyxtLZvyLZJCBJ3vgGkShptl8?= =?us-ascii?Q?EpQPrpcJjbhgfZufEML1oupt+c6Ynk3kcl65rT/quh4/G4JXywf8xvY4e+Md?= =?us-ascii?Q?TO+Ja47SeHxgRfEVKi2YYml52iLR+pNjxRwz9HzYI7ZiMrHVUOxQZfrbPwgI?= =?us-ascii?Q?VOrOh2qASmmPVM9BQzi33L1oiYmDXOvWlIfTXrQI9KIO8FBc8pRa8txG5ase?= =?us-ascii?Q?yyRGUO4LOav2tAOp+qz63qPXKiodpZABgF92rdTIj5QF6AzrcAAIxIdJ1u41?= =?us-ascii?Q?fMADr5tSltxhQpxnwK3tvztSamd8xIh0oTkQ1Nl4IarIgLChKCUTX5kLvygf?= =?us-ascii?Q?IWnSx2+z1Dgd1jr/n+D9gOEr8yQDYmaPTa2outIrBM4FlH3sUCsZEbEgfhbB?= =?us-ascii?Q?qIrAluDw/M/UOONQashbX78SsG3X7EvBMM0GXWhYhKpy8Hm+2zOOn1fgahTF?= =?us-ascii?Q?gdXRYAneDABNlyhpq1rJ0pCmD5QPoO91/iqC1NBmFOD6vnjujxHLPHvj7Tuq?= =?us-ascii?Q?EUZ6nQy3dxFmjjRp21iF0vjz+pS8hJcFjOt/c7aW6VCsI8yeKPRwDne/urGh?= =?us-ascii?Q?+TY17APFKv8Q5TXudrES/vpabFcZouV3v45cZtGAzKSmNEcdCJUKPBTQBWNq?= =?us-ascii?Q?+T5/vC7gnULUTTrN5++8cn4BipVBnNdHHRQQRe7u8ywEYVY+pwppMW5kFPTP?= =?us-ascii?Q?wDqW4gyDEUBa7aQt3ytVB9FU6avluRAy80XqqLRDJlBkpIXxtBcLg/LIDVu6?= =?us-ascii?Q?Pg0tREpOzyfvcMtXXzYWb+cdzO0Uu4Joa7MrC9/Cn8WiYM8p+pT9NwjdMS3d?= =?us-ascii?Q?GBAMhbnYOKreayVWQwhsTw/YhvQywsJb610u5oLkRo3BiTHpYddOk1g2A7qf?= =?us-ascii?Q?6xKl+Y07zK9lTbVC642PEn/U4CyOYZiUJQL+LXL9nO3qgNF6oYGTFjKhyofD?= =?us-ascii?Q?8xW5QGTaPrbS/TtGX3rZetyN8xWvMzQNuYAoNTnBSTBb769Giyvh/jdbnp6D?= =?us-ascii?Q?7vtrZioTF6g2BDfqoBH0F8aarxrR+HvoW0rm94sYqAskf3WRbhK8SZ1CMIUL?= =?us-ascii?Q?kY9OyGPKDsOyOA13Bo9Q3kIbn79ppsHLStOYGmSZKtBPr3jjYUS9Htc8HX/Y?= =?us-ascii?Q?+PlpShNLeilkKTcEEi7N1JxWKlu9h4BZZLkTKaYcPDbXGvWEbpulH46HUBzz?= =?us-ascii?Q?COlTEXV8f23r0PE0F6U4Dz6dGd/nkGsrOHMfY294GQsN7rexCHe4zt9Wl0Zk?= =?us-ascii?Q?Exas3fHpMSUTPq2QQxXaCw2G?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1d544c2-560d-44d3-a76c-08d91ebf22d1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:52.2562 (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: 7Em56agp5msWd4tmMyVrzIbSj/AvYjwE+GgijjYpnlHsfnW9CXRY5IelO9/7A1631nMFlDd/Ehu5J7yLFuRHKwkTiL+i2fJtvzBdneLuWHw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.7.122; envelope-from=vsementsov@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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Check subcluster bitmap of the l2 entry for different types of clusters: - for compressed it must be zero - for allocated check consistency of two parts of the bitmap - for unallocated all subclusters should be unallocated (or zero-plain) For unallocated clusters we can safely fix the entry by making it zero-plain. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai --- block/qcow2-refcount.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index f48c5e1b5d..062ec48a15 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1681,6 +1681,7 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, uint64_t coffset; int csize; l2_entry =3D get_l2_entry(s, l2_table, i); + uint64_t l2_bitmap =3D get_l2_bitmap(s, l2_table, i); =20 switch (qcow2_get_cluster_type(bs, l2_entry)) { case QCOW2_CLUSTER_COMPRESSED: @@ -1700,6 +1701,14 @@ static int check_refcounts_l2(BlockDriverState *bs, = BdrvCheckResult *res, break; } =20 + if (l2_bitmap) { + fprintf(stderr, "ERROR compressed cluster %d with non-zero= " + "subcluster allocation bitmap, entry=3D0x%" PRIx64= "\n", + i, l2_entry); + res->corruptions++; + break; + } + /* Mark cluster as used */ qcow2_parse_compressed_l2_entry(bs, l2_entry, &coffset, &csize= ); ret =3D qcow2_inc_refcounts_imrt( @@ -1727,13 +1736,19 @@ static int check_refcounts_l2(BlockDriverState *bs,= BdrvCheckResult *res, { uint64_t offset =3D l2_entry & L2E_OFFSET_MASK; =20 + if ((l2_bitmap >> 32) & l2_bitmap) { + res->corruptions++; + fprintf(stderr, "ERROR offset=3D%" PRIx64 ": Allocated " + "cluster has corrupted subcluster allocation bitma= p\n", + offset); + } + /* Correct offsets are cluster aligned */ if (offset_into_cluster(s, offset)) { bool contains_data; res->corruptions++; =20 if (has_subclusters(s)) { - uint64_t l2_bitmap =3D get_l2_bitmap(s, l2_table, i); contains_data =3D (l2_bitmap & QCOW_L2_BITMAP_ALL_ALLO= C); } else { contains_data =3D !(l2_entry & QCOW_OFLAG_ZERO); @@ -1800,6 +1815,19 @@ static int check_refcounts_l2(BlockDriverState *bs, = BdrvCheckResult *res, =20 case QCOW2_CLUSTER_ZERO_PLAIN: case QCOW2_CLUSTER_UNALLOCATED: + if (l2_bitmap & QCOW_L2_BITMAP_ALL_ALLOC) { + res->corruptions++; + fprintf(stderr, "%s: Unallocated " + "cluster has non-zero subcluster allocation map\n", + fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR"); + if (fix & BDRV_FIX_ERRORS) { + ret =3D fix_l2_entry_by_zero(bs, res, l2_offset, l2_ta= ble, i, + active, &metadata_overlap); + if (metadata_overlap) { + return ret; + } + } + } break; =20 default: --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866564; cv=pass; d=zohomail.com; s=zohoarc; b=KBJZmb6mFD9KN0RsoW6sWSBGkCLaAfr/98IlaS5ujno5nI9CsDKnrmwFJXSQvK85GlChrpxfXPLk53jhqhJrWCmlqua/DTEFcUsXy3EBNd83EY2Q+KOAXXPYU00uy7uTjD7Q7Ki5Yro+pGLJOExsCbRqbackSz/QcALMOP7cwjQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866564; 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=M8CJzS2CiAgW/7aayOrTJ2lK8BeAIBaPTwhPjpej5Qw=; b=T5u0Hoi1ZKxU6/OiKV2TCIB0lDqMIXaBIJDnTyhLHzevAOZEbd8p3BfLeiqcHW8GitCvVfba21ykZFojH4XYtB+CwLYpG6Y7dz9jU1OW67c1hzPuy8BQUgXrhlgANSae5KBp27WwxCLFvcMEefn1gUKeguW+DS0j1rs/Da7S/h4= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866564115698.8251932413791; Mon, 24 May 2021 07:29:24 -0700 (PDT) Received: from localhost ([::1]:44792 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBa5-0007zo-SQ for importer2@patchew.org; Mon, 24 May 2021 10:29:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40588) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS8-00077b-3P; Mon, 24 May 2021 10:21:08 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-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 1llBS6-0006u5-8q; Mon, 24 May 2021 10:21:07 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:53 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:53 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cckx18stDAKKWiLUnLNjfwLom+qeG7jEvWuOXDQ8pc0Kimm7Xlb72yrhZ8BLvlbPchi8OZ12xV/3JFdaE1/cDVjNFBjir4sSPpoagyYE2AQ+EDpOpu43SZxXkzhRDuiTAj7vEdx2XshxtRin+H26cZ4ulTi/TIuKXMeSXH4Z4mpyA+wmopxKqyKk395HoMUQplAwq66ZfaJm4EW4SLk7Tk6RzTgC9akGRRevSZv009AF2gwLu8eCYDyQKf7JhfqJDCQOJysAdE453V9KfdK8O4kMbFZBchE1oXM4p9ejOhhO+vIc/FxO4CMKjZSvhsIRmYIRl2T52wvmKewSI3DTXw== 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-SenderADCheck; bh=M8CJzS2CiAgW/7aayOrTJ2lK8BeAIBaPTwhPjpej5Qw=; b=E8so7m10Uwu7bNZPNeP3nkcadMYgv9tBnQF/CjOsyYsnWp7rCgQuPh7I6kN9DYveGGY+ZeBRB92nx1vHIBQXCle0uwrynsCKaSWXR7krG57tXodG2HUOA8BNlRkzxSHPSpz/LtnloJEmeIgMKb2LZMd0vIFYXz3S6hnQfGDUqGr08XVw5wNeY8/GSn4B/Z5mdYrR4lzaFx5RNopw5xLw3PJaw5wC67kZ0pwQAgiMqEb8A+zd3LeN7oyvVFs11kuetdWPFwI1VBxiLinF50B72DuiX4ZLtNpQs3F4BmgL7kqrbkq42RNPsSXan1DxxXxY7UxkArc1oreMLjaGuvNjGg== 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=M8CJzS2CiAgW/7aayOrTJ2lK8BeAIBaPTwhPjpej5Qw=; b=QiIGU/v4uZnrLn9u6t345IL1ULwgGF0/Um43mjAunYIUqfpH9F70oRmjSXHbK2jCS5F3QAC4uTc30efN+q9CjtYEYlRE0wd32qj25y8KElH7SJgUlVFm/fzpBD4DQ9gQLJoPdpiOxsO13FHJh/7FdCakiqwUMaDiJT0VHRcuLM8= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 07/10] qcow2-refcount: check_refcounts_l2(): check reserved bits Date: Mon, 24 May 2021 17:20:28 +0300 Message-Id: <20210524142031.142109-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 310d4ebd-759b-417b-bb0a-08d91ebf2381 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:53; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 56blYcD44jvG0mxuauiNu7N9h6nYDek3FlF/q3r0AblRlW2sADXkmj/JB4249dH8a1qeqfPE6AoktacIEuy0RmFwflRs2Y3G5vefwBMT9WfcPbel0WIyu2SfRmiK3WT3xyF/U67t+CnegNRXxUSAWsO6QOsUfbikTV3265GM8yxQ03odGB2Pgn+hvY1VYQBUtMOEvX3j4gXuL4WtSdwMayrcVGdqZkVoZKq7LialbosIkxiZSAky7V3n7ufDALqdXZXrVzmUrqk86UswJWoTkXj8tj6bF8v3Wo6aOiPl6954ffAZl1xAEVRX/YeekaxIyf5Ckexl7eP40TfZ+Vcopc6CGbA/Kr6foC8Diy5dk9Kis7GmHRWOqpXtHQ/uuYfa9PIBhylfCNGErRW51fH5h0ohVBJ/ouWES2tchi6iManWz4JHYiHK3oh4ZA9jdOcYiUN6gk/FjGDmzIifakwieAkvorpPzICZONp/X6Bi7DK7LrfezykrTZQpUtOVJtDuYb4jH7SmGkFCgMtkia5hQshixuUMFYJuPHQZIX8tG7dx9+q+H2FOY1OQ5vT2qsGMZCG1h7rrkYaINiAP92hgrU7aHrtUhMWvFhWtT9fMO2JQ+4FM7gStK1camV8bqIR1viIwIg5TZlUFDHBDQCyKVt7e3Z8kApFG4ONVJTLf08XpSTbbU313+C1cTTncR8Lt X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?06jMMzL5AqnWgL2r8PlEu1v6PMn6E3iSnvpXd6M9IwPHC9d+P3L+7/DIXkDv?= =?us-ascii?Q?GG0oOa6KJ08QJ6K2c0LiJpbZR6/U1frcgPFnQ0CirdfJC86jKA3WBuwvZQaz?= =?us-ascii?Q?PYHPJPeMl5vtBxBPFOZYu++mrtPIkxiH79HY2NzVWzNmHXY2EQRPUgSM6Sd9?= =?us-ascii?Q?IV68cCjLUlQDEeR4vJogjwFbUcdENELfOR+G2EAjNAIspiror1Lva+XPn6Gd?= =?us-ascii?Q?uF5omQsldBeUFmWvX3KhiOh8GgS0cH5EwTZ3jNv/8zhCz/KR04ZB+rTnZS4A?= =?us-ascii?Q?gpxySk5LomsVIK9vZ/KsC6Q2gJVXY7lS2tn97kvvSMv7Z0OZlQUjNyIBDV2D?= =?us-ascii?Q?TFGyu44IUI/uhKzi8NqKsLMKvs7IqJoiA//g4pfUnOJKYyrCWLjQ1tAer2X2?= =?us-ascii?Q?9gW2PsM0fyf/uE7bBbqJdJxjKBMwemRfHjZIY6ArE3BE9JJU3nfc2vMNfgw/?= =?us-ascii?Q?hsmA/6cEQE72pB+WL0ozJWh8haKJnwHizKfksmfWfWL/Vef81DMgzfiIp8Hr?= =?us-ascii?Q?PM+iV2n9ceu4Wg6cl4Davc4u9prUO+/TKWcHhoG+JQK9XeNY/JdBcD7osMvU?= =?us-ascii?Q?KrMuPnATkN870d3KcVq58jJnk62j33SqeMqONfMYdrd+TjC+swP56BqePyOG?= =?us-ascii?Q?6Cg/CahnhPWfxBvUHMXkKmO5kNkohvFvOmJxu0UHmrZbbp3TYGY5rGhrkIfS?= =?us-ascii?Q?G9mrTE7mbs+aVFc9Kpq0ZBxqpkaLnYGXyD//CCZBOSiaavSpcG955FxByH43?= =?us-ascii?Q?a0pxUoc32cPp64S10bTq78wsWst4m2ok4lV56ZnyT28kVehLEhdfyfUyQc8/?= =?us-ascii?Q?PP6BykAIPkqE0Loy8+rl252wDAeOeMdVl0bIoNssoVk7CmEkCLPExHHcQ3Iz?= =?us-ascii?Q?UQwC0jlPY3BxnruCrOQvMRDyqwyvNN2eQwzanIzINVr9hBkfhUnnRoAHvxxW?= =?us-ascii?Q?jtTSJYkz/9nnWFoaBOYahusqrbUj0webG2wdHRCoPfNs/q2y+y0OV4f0loY8?= =?us-ascii?Q?iU0NUf7Sy9Egqrvzmgdy/XOZJgo+76nNsAogQcYAY0sWXk6tJENNhrFFV8XR?= =?us-ascii?Q?Fy5YlvS0n1HblepXCqkhf4jgaOO2+RQvpb7HTz/ZNIvDtGCNUHQE4WcNbT9q?= =?us-ascii?Q?fdp4fhKUq1s4f7NRLFvz3pc3PzCQ3NdABiB6Y8tHhA4G0mlL4miq84dS0hN0?= =?us-ascii?Q?RcVjFvPV+6Nu48AfvuQgkTbgK3iEj+RAFlvxTqbxzzC1nHZADGxsOoD55XkB?= =?us-ascii?Q?KT87+GcKuPohnPGpzbM9NM0tjy5FiAO40k+szISidJKy9N543PhaFNBFjSMT?= =?us-ascii?Q?hQrsaliBytVCDv7P0jPtPnfC?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 310d4ebd-759b-417b-bb0a-08d91ebf2381 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:53.4311 (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: lMvV2V86oyNBQt+NIvY0dlQ0uhDxKUlMte0e47ggnyM0sPxyVgiyQK9FwVGjZXEuQte52U7AE88IUfZulNF8oWSIWd6SKLx4z6z0E+Xz8RI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai --- block/qcow2.h | 1 + block/qcow2-refcount.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/block/qcow2.h b/block/qcow2.h index c0e1e83796..b8b1093b61 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -587,6 +587,7 @@ typedef enum QCow2MetadataOverlap { =20 #define L1E_OFFSET_MASK 0x00fffffffffffe00ULL #define L2E_OFFSET_MASK 0x00fffffffffffe00ULL +#define L2E_STD_RESERVED_MASK 0x3f000000000001feULL =20 #define REFT_OFFSET_MASK 0xfffffffffffffe00ULL =20 diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 062ec48a15..b8fd6337d5 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1682,8 +1682,18 @@ static int check_refcounts_l2(BlockDriverState *bs, = BdrvCheckResult *res, int csize; l2_entry =3D get_l2_entry(s, l2_table, i); uint64_t l2_bitmap =3D get_l2_bitmap(s, l2_table, i); + QCow2ClusterType type =3D qcow2_get_cluster_type(bs, l2_entry); =20 - switch (qcow2_get_cluster_type(bs, l2_entry)) { + if (type !=3D QCOW2_CLUSTER_COMPRESSED) { + /* Check reserved bits of Standard Cluster Descriptor */ + if (l2_entry & L2E_STD_RESERVED_MASK) { + fprintf(stderr, "ERROR found l2 entry with reserved bits s= et: " + "%" PRIx64 "\n", l2_entry); + res->corruptions++; + } + } + + switch (type) { case QCOW2_CLUSTER_COMPRESSED: /* Compressed clusters don't have QCOW_OFLAG_COPIED */ if (l2_entry & QCOW_OFLAG_COPIED) { --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866737; cv=pass; d=zohomail.com; s=zohoarc; b=AOcAJRnsWk8pkYe3H4K79SLS1NtI7PdRWn/hMGOyP6XG0pPRGOIgTqjh4iw6V5mDux6pkQIF9xGHLBwGpZQoNBslrH/2g7odKhumutJdHzBr5KnYVfvRG7g6HFxI9vVFGv4IQmU5+1URV/xGJXbeIVSnxjTavzpkJAnmlydFXRE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866737; 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=tKwLwj+lsTnh+2NuXdem26jUII13JuOyHC0xehNhrqA=; b=kyWZZw6ORw2hjr3mxReSmyKgyiv+zz0c/9IU3LAmNETzu+HxEjUycV8fnYXXOtDw/Rt7mF6iTgXvNv8hbYobK1DdH0th2nRqJp+eOKGav8/dvMIanyHI9OAx96ezPjCbz+kHJCXrYaSS22NUFRlp+Nv/f5Nz+8GY4xQTwUrmPgE= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866737314962.60909665744; Mon, 24 May 2021 07:32:17 -0700 (PDT) Received: from localhost ([::1]:51498 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBcu-0004Fo-5R for importer2@patchew.org; Mon, 24 May 2021 10:32:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40644) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSG-0007dv-45; Mon, 24 May 2021 10:21:16 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-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 1llBSE-0006u5-1U; Mon, 24 May 2021 10:21:15 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:54 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:54 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i19HjFReXq84XF/Q6Nz5kUh9CRsCq09/qX69PdwRdzUUlM1cLU1CXbpBXlIi7fz4+ERyblmz+0mClz041Tp4dQC/6iT4g0dzNzknoiimkusbRgs+XQrQFEn5X7zAg58ZhZ0mCfDuzNX+hl/nSoIDsCwylBZTJmOTf6kQS7eCYt+WgIU2KV+nCDskuWlau+MWYsIV0wJULQCMsjMoOFx622aUxAp/j7Y3EeziMGYfihLsuKeLZwgfwS7SuxKyzXoP2ys2etWBlh2dWEbl+Axm3p+REn6zyiei8kMTrPRR9DBEv/kWVqMnFlmPOfEwuA4wbzEUHzdezLzGXZAToM4cFA== 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-SenderADCheck; bh=tKwLwj+lsTnh+2NuXdem26jUII13JuOyHC0xehNhrqA=; b=OhOIg3OvMVnlYG3tAs6sIaex/PDVkPHGYMOYbwGDibjVNcDmuNUQj9t6XAIaxNgrXoEahPphNU0Duljfd4y+NId/w+3f+j5rPZVMUXt3T6+C9AEs2YSkrHLjmVwo7+qaprfTCTr1Tk6UdjYDvENrW1Qs3Z7Q+05Req006ZEYo7x9vNDcqqOZVb3NppgjqIUwbq/b69GQHY8qE01WCpIWDvgvgo1PaiEskywBC+hOyNfyUaWJ1WIMYIqudftDnqyQk2o2lslBcPXhaMYCITqroLPRYX91WQyNziSPD1tlN2u3DT0uwrOQG9IdrHEn8113funospr7Nnkm1e7deGCLzg== 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=tKwLwj+lsTnh+2NuXdem26jUII13JuOyHC0xehNhrqA=; b=QrpKdTNLy9qgPxU4PotgutL1EChgMQvcrp0/6CRn2KiA0AbyryXAmfz2BPTa0vDN5e3+PYW1isfoTErpzikpF1rERvJ+AXz4V4SgISR2rxFGp5NyGCa0CFBCMDC8r/+nHrE5ixxmD2dWtAHZ+k96JuH8W4I4ZCI1eVWc1EtbZsI= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 08/10] qcow2-refcount: improve style of check_refcounts_l1() Date: Mon, 24 May 2021 17:20:29 +0300 Message-Id: <20210524142031.142109-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a7e7959a-e9a4-4876-4347-08d91ebf2432 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:454; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WMx8KGFfHMIu22PrAxs45rIOTl6hbpmm2m6oAmASOE1n1gtgh4H6whUK1mo1rovVf2MkSgeE981SDk2Ruv6bjbyCam2KZqmseNmsrIlE79D/WABKDXsKAiCyYiYmK1JfW0EOtf+MjvzRTz+21R4ZfDP7gSxOztiw3PcogWUaeEmFRUZO/avkTbOx4xkaQHgQhKLbBGoafIfyB2Menm+0lgX/2fNXOtWssZglivvorgAJlOZpf+/asLVV5zA6pUzhwI5ssZ4TtIAjAKJpCZb20icNO05Krai72VVGJtAJC8l3KvUk1pxsSI6hIXHsP+uTSY+NeHc1PVAokAYcB6keAuih10bHP9d0jdLrp9RsC65eAk/pP5W51FqJdAFpSmwaKXI4vwRe50CuGOJqPf5jwtIIh4wgF+JHFCi66yMGqEFLd+/6QssMb1qdMlMvHsn0iJRV+asVQwgoZLYe+YtG1ejWzkSkfFX9wY+qEZE1XRlAsogibaSCgYaIFDvovFI5Zh74W/3zgRmT0T/MF1WflAbZk8g/5/XMNklnyPAAZ4kzNSIaj0R4KVJQZZNRQ6xmFD/ujcgj/QN6DBycXt9cBlTDjSm76HMl5knSAEFFXp9F7FVd4qabeG+QkW9HxRkgky1X0vLM3TNj4tWLw6UdZDBdHek1OsQqdRrZZIIKD6kZ8XJVqE6Aby5EvzutsFBc X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?RI4lmyHd6gaI95aj3EC0DsKPlVE6as8QTnZSu6PGRQutoGN50QYZPhsofU5w?= =?us-ascii?Q?YnEMGCt5+AKKnSMXZ3bu0IkafCf3EpASmoHDL9VU3slOYhXxhvV889ABhrqY?= =?us-ascii?Q?SS0LxA0/uC6FfkChlQoN5gjt/PPii6g7bYn+gIhvfzx2ekp1agK5vDaRrDqY?= =?us-ascii?Q?OUvwJnIJH3CIViaYpyCpo5pi5uDzqwFfWBLIAEoiC4Q5JNJEjZvYwxFIEIYW?= =?us-ascii?Q?ah/FGX1FoZtgWjw9pMfcCMXbnwEDwnti9ayZjQmT0FhRTlKwuK6U13wi0ovd?= =?us-ascii?Q?/WEpCJvdkPvQ6Wv3+88ehvrq+cW9MOEtAxD20GlmCB8oSaa3B4a3/XJiX8K2?= =?us-ascii?Q?r2eKXD6riJ+qrVt0eibgXFFWBXRMouKdDJl89l9LXYVgPXARoHCnAIpr99aV?= =?us-ascii?Q?AUgPgMD2QGAAg2Gxm/OA/KX8m8D4EEIihn3+BLY5yW32mi9d73t7ZFffWZ71?= =?us-ascii?Q?8rger1QqfNN1UGMM+xXmtmf5ntwasCLbbaLSkAaADulb6wGaKAVySfWT4MuM?= =?us-ascii?Q?UNR17RMA+fVg3tYUTmAEC6W6A2st7tuSIiBQbd+9lsuJcvX14H3cWrgirHn+?= =?us-ascii?Q?EK5EIDw4WG62zjorGzKSCSQ28av7b7g81pxZw4U5X/pxcwd5x+kt2eGRnK4y?= =?us-ascii?Q?qtw+2Z/7NT2K/MdxLBVq8BmDGh3xh1o7EOmrE374aNI0dzZ3Jkct4yDR22bE?= =?us-ascii?Q?F93oJbR0cEBvIA+1EIibHZurNnriTv3ZTj0fRmzKJf6ACBGX/OhtQzH3LOX+?= =?us-ascii?Q?v7N2bA0OHKY+n2VcA3VzqHZZl1EepC5SPnTHRYG1q+6RYaDEDHggIOr1VeJA?= =?us-ascii?Q?K7o+ZvWr0/Y824zK5+vNrQMhws7QLz+Z23LQ4EQKGNyeUsHSmUwifqo4xGez?= =?us-ascii?Q?+/ol3nkAsuKEB4rbiPks62MHOQXizUKRbh12H26prc3ymTOacTM9x6vA7qpi?= =?us-ascii?Q?WQLhZVRSaT4l3593AdXRacxV9lUMWgxID9GTMW/8Q5oNavdo+7zwruMHpVVj?= =?us-ascii?Q?2gu2b0Qo3GKFKDMB9Oh8a22K5ObxNdRKTAO2Ri0yHa0KDZJBZaXI5gjdpWo9?= =?us-ascii?Q?NSVxR0kxMuH6UCDEtr3SsBjZ3Yh0zUao+2yMiC8ffSEdxtl/zF55/Wj8ITxL?= =?us-ascii?Q?+skLy8/pNgvGkaKSu3ll3KmamTiH5jttTgg7fGimC8dFDBmQOW6PPZoyGguT?= =?us-ascii?Q?9kJ6A4hxQDS57amSiRyG/UsyjDnaJe1VkrMc6KxpKfozauhyktZWOFO2XB1e?= =?us-ascii?Q?wb5gOif7Y9lyQQ2XqvX6W/zCsfL+WNZHqWKTZTaS/165cRdwgxMh7AIK24Zq?= =?us-ascii?Q?KIlmyKRvWlynCp5VJegqpxto?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7e7959a-e9a4-4876-4347-08d91ebf2432 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:54.5999 (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: JbhRwKjDFHkOjy6Jl97278//Bc6elbgsjPRe9E4zA4fFyxJpqdl0cORi6rtVwuPGthYK6wMRu2wJVoieci/YuJq1beR9IktenfUij14l5dg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" - use g_autofree for l1_table - better name for size in bytes variable - reduce code blocks nesting - whitespaces, braces, newlines Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/qcow2-refcount.c | 98 +++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index b8fd6337d5..adebb15598 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1864,71 +1864,73 @@ static int check_refcounts_l1(BlockDriverState *bs, int flags, BdrvCheckMode fix, bool active) { BDRVQcow2State *s =3D bs->opaque; - uint64_t *l1_table =3D NULL, l2_offset, l1_size2; + size_t l1_size_bytes =3D l1_size * L1E_SIZE; + g_autofree uint64_t *l1_table =3D NULL; + uint64_t l2_offset; int i, ret; =20 - l1_size2 =3D l1_size * L1E_SIZE; + if (!l1_size) { + return 0; + } =20 /* Mark L1 table as used */ ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, refcount_tab= le_size, - l1_table_offset, l1_size2); + l1_table_offset, l1_size_bytes); if (ret < 0) { - goto fail; + return ret; + } + + l1_table =3D g_try_malloc(l1_size_bytes); + if (l1_table =3D=3D NULL) { + res->check_errors++; + return -ENOMEM; } =20 /* Read L1 table entries from disk */ - if (l1_size2 > 0) { - l1_table =3D g_try_malloc(l1_size2); - if (l1_table =3D=3D NULL) { - ret =3D -ENOMEM; - res->check_errors++; - goto fail; - } - ret =3D bdrv_pread(bs->file, l1_table_offset, l1_table, l1_size2); - if (ret < 0) { - fprintf(stderr, "ERROR: I/O error in check_refcounts_l1\n"); - res->check_errors++; - goto fail; - } - for(i =3D 0;i < l1_size; i++) - be64_to_cpus(&l1_table[i]); + ret =3D bdrv_pread(bs->file, l1_table_offset, l1_table, l1_size_bytes); + if (ret < 0) { + fprintf(stderr, "ERROR: I/O error in check_refcounts_l1\n"); + res->check_errors++; + return ret; + } + + for (i =3D 0; i < l1_size; i++) { + be64_to_cpus(&l1_table[i]); } =20 /* Do the actual checks */ - for(i =3D 0; i < l1_size; i++) { - l2_offset =3D l1_table[i]; - if (l2_offset) { - /* Mark L2 table as used */ - l2_offset &=3D L1E_OFFSET_MASK; - ret =3D qcow2_inc_refcounts_imrt(bs, res, - refcount_table, refcount_table_= size, - l2_offset, s->cluster_size); - if (ret < 0) { - goto fail; - } + for (i =3D 0; i < l1_size; i++) { + if (!l1_table[i]) { + continue; + } =20 - /* L2 tables are cluster aligned */ - if (offset_into_cluster(s, l2_offset)) { - fprintf(stderr, "ERROR l2_offset=3D%" PRIx64 ": Table is n= ot " - "cluster aligned; L1 entry corrupted\n", l2_offset); - res->corruptions++; - } + l2_offset =3D l1_table[i] & L1E_OFFSET_MASK; =20 - /* Process and check L2 entries */ - ret =3D check_refcounts_l2(bs, res, refcount_table, - refcount_table_size, l2_offset, flags, - fix, active); - if (ret < 0) { - goto fail; - } + /* Mark L2 table as used */ + ret =3D qcow2_inc_refcounts_imrt(bs, res, + refcount_table, refcount_table_size, + l2_offset, s->cluster_size); + if (ret < 0) { + return ret; + } + + /* L2 tables are cluster aligned */ + if (offset_into_cluster(s, l2_offset)) { + fprintf(stderr, "ERROR l2_offset=3D%" PRIx64 ": Table is not " + "cluster aligned; L1 entry corrupted\n", l2_offset); + res->corruptions++; + } + + /* Process and check L2 entries */ + ret =3D check_refcounts_l2(bs, res, refcount_table, + refcount_table_size, l2_offset, flags, + fix, active); + if (ret < 0) { + return ret; } } - g_free(l1_table); - return 0; =20 -fail: - g_free(l1_table); - return ret; + return 0; } =20 /* --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866305; cv=pass; d=zohomail.com; s=zohoarc; b=QR6Ij+d3bEJw+JCNy0TxLPQOtlwtIIW2W0RawhW0AA927v6nhscSFYq6QoOQX+WXA+3kd3xNWg/EBqspRLoSEUQQrbEvQIE77ZtXtFmV2nkIFTmQeG1LD2TTOZRO1uoKIYtbCdS5ljIiBkel47UPJDOJwxd62DrUyWBKqw3ub3Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866305; 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=Fb/JbJfFGdqroR2KDGRC0fscvDrKAKAnElwBfhdl57Y=; b=W8ns2FFVQfYSexBMQMUUQi2mMswwAYGwv1At0Hes0BJ4t9yUTGDruBASC6wkGN4U29KbpL1BttjkO5LHLf/U5+nowuhQV2oGy9f2yIe5SvI9dzT72RKwg/KXbLExSCSIBDaf8mfQyUcWvOhKhxGTi7V/p8W/UsXIpXfUu/hPPKs= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866305220271.35733875720814; Mon, 24 May 2021 07:25:05 -0700 (PDT) Received: from localhost ([::1]:56910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBVv-0005HM-Uo for importer2@patchew.org; Mon, 24 May 2021 10:25:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40614) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSA-0007IH-Lt; Mon, 24 May 2021 10:21:10 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-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 1llBS8-0006u5-RT; Mon, 24 May 2021 10:21:10 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:55 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:55 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L9Muge5O2wm2g3t0AgfAsc7jmOcvboxnAPPbq47OEHihD+QlTcrMJfkchYI4QOxIsy28ssNXJXwhUFUB+j8xCEoUAJ6zT2h8ccsCgc12eUsLrPhjhdj+gv0kb3AXG8lLL3ry6JyRflN2+32wV/owjYIRdTkypSRxrlnDVNbO1WfqltD8OMmyqboLnK/pORSgVINsbuNwClFPie1jjSF8etzDm1cSp7Dwb+OY596lVzmlQ5w0Ns2dV77F3N6/Co4KIbzJKaqFnuhKUydDQ82VTyGAWaZG/+h0WzJaeUVTjMGDCTVo/sYDlwjbTrO2LP1siec24nUwcljY90gpnaH/EA== 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-SenderADCheck; bh=Fb/JbJfFGdqroR2KDGRC0fscvDrKAKAnElwBfhdl57Y=; b=hK8NycbzuraOWprsVbA+fPkQbjZ0Lirr6G5G/LUaDpjDuALun85+6OlQqeqrh3JfChiDGSQ5LzKUZ96VipJ0vlFQhQMFcr1X+kBrLqUnOkrC69wvcSxkUjNT3uNbHfri9VQVa1U0eEBXAWSfx1sHdOSdp9pfHjbjNNCeebY5ScwUDyQxNqVoCMMtF2FE/RC/GHgkb7Nhq0gw/PwqJyduWoY66ZrlrEuXK1xR5o3xGDlQHOMcyl5ZMxsbvSTi9ixVASj0GgHgFVc0vCRIO+OTVPdYGwwgAd39ylViuUzLFbvtWBVrX803vfq41A0RhplJpE2GnAVLC8CgC6LT2fichA== 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=Fb/JbJfFGdqroR2KDGRC0fscvDrKAKAnElwBfhdl57Y=; b=EaoIRk752JIqITXMz3G5nsby3WOwveEqN4B8OO79Yglx4XU0WnYIZEouIgO10vX+1LSll6Gy2rrYZf9okGcZ49R+TuSLzi55WRZ0Qtkb26zXppqQdNK89bIFXQ6ufKllenPAwZIjsDgbtrj5KcVtaioU8kPIdZEEtclaWnDMKxM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 09/10] qcow2-refcount: check_refcounts_l1(): check reserved bits Date: Mon, 24 May 2021 17:20:30 +0300 Message-Id: <20210524142031.142109-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 55e62b1b-a387-40db-c513-08d91ebf24e4 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:257; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5BZrImfXHpoVLuihpRYnIbM4ERII7lxhNvsc6CS19WRbcuoKCoW/wGpQPK7fII1O8y3t8ITawupibc3RKsa9xo3YBGXOTmXSLqrqvOg2SVwt842gxcoNDftbip+lg/pzluUvXmMv8Go7QRBZYWONdARKtn8UmZhmQoIIsENv3CDdvu4ov8hVospAyo5Lw41up50105xFPtlRiiKWVBxIg7vwdILKc/g9Al4T5ZR/PoCMa2clY4HN4VXdy05YGGVvyay1/U6uStYlVfiEW6rEe2i+NUvSX8ws4AnKZBIAaWGPHKwRdKwOLyYbitThknJABerf+J7ibwvfZpSZSpU6chXxMVWQe9eN9SGY13lXyVAA9vIi61Hf3LuuU5yP5xcStauO7ITGlVytgn77oZ2W/dM9s2Sxw6Le1enDJpD0rRSjHjbXpVSOcsjyaGCqxXJE2SdZiR5opZp8aY4IoRvrWA/16LUzRc2xPNaa+7pFEenTzJjCpxUgSzjrXRl2SBo5oJCRRqO10BdGsJf6NnKrFlQiXqZ68FwYEbTQFWsebY8zCFFbLZqEtgNm5ll9Gr5cL/48B65a5/K6RJzQ2E5BnTVMrtEtSYPzfvMeVm2aO4FtKUrs3We98R0lTEwwZaMPK8Hm/0WPU5gC4k33lyt+aBT8CokyqRLh/Y/G7bZvSq5WJmlKj5BHu5WdglV58bKu X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?RQhuQAjYBuQSwxPOyiEmwjY4e10xoxRbC0vW7WAZj0wuK74jHn7h1PeAuw7h?= =?us-ascii?Q?/EQq9muBoUcj9JNMiLAEZG1t8tbLkLBzDpukj92ezILNNNgd/CVd1ecDAu5a?= =?us-ascii?Q?qfh1S2gkEdePO7Ls5Z3lDOtgwClfjrwzoFDcQh7EZXALpQUW+lnIUjvcJngU?= =?us-ascii?Q?R7KyGtia7bxUedkI82VSC/BJnGJ8yTSRRLv4loa84qDFdjKfNR50R18oC0U3?= =?us-ascii?Q?iNwmHtrkVc2qMq6a5OQUuC9bLw3GsQEdLcnYcTta0qFQQV8m0XFbCawaLHM0?= =?us-ascii?Q?tcP9hdd3f3TLbqs9WEp2mTuASG9vLHEfryqKgEm2rSoGnDorUQswKHGaJIlM?= =?us-ascii?Q?yPidzLC7mCTEbvTZCa9YlmClvZJswo5wi0BJpG/sI93M3aad/LLwwbgRVpo5?= =?us-ascii?Q?kjG/8nMw6h7+jc5zYammPFFPV5fzfguvIhstUH8ex070pHbBl4K239wheFhW?= =?us-ascii?Q?klhe1swiFqHq7xqic3CfOBfORyPL4JRk8BZ7+xaLt+vRK848F/FPpQ5O6OAv?= =?us-ascii?Q?aV5vBT6ghdlixIH0b0MBOcukMcm59IBhzUrNXCDpVYXYrNQXRSGqSVzL8Tdl?= =?us-ascii?Q?yA5miB4vTlx+NmxqxjfiEkz3/Ed1YZU5pwb6ITQ6ZYyJc1vGCwOME3jpSxkx?= =?us-ascii?Q?qjtb5easDDMPy7qo/YBw5MWUypgKUAY4VJsSO21xVTQf7fqtHO/W/L0PQ/hj?= =?us-ascii?Q?t0Oj+kNc1BL31D8spEECuzSVwJP9aoTTnbkO856HQWyhnmKIh7qgbElLt2Bd?= =?us-ascii?Q?0+2vZkNxMRVVKbZM0SbEDuhrBUwF/YViHjYLQh+2tyUrl9PYuCV4+r7vK1pz?= =?us-ascii?Q?0pkinfeMel04Uov1WbEw7f13s5tttwIywv/okcDCf/OsoheYEQFIQajNLfab?= =?us-ascii?Q?q4jp92QfxJcQWZF3ZggqvHKEcsICKyQHEElc6frpVeFwo8ksFuw6A8iF866v?= =?us-ascii?Q?oM0rce1OS1DOCV1z/0uyIF9L5KxXPyQxwweLn8F+T6tqfHMvSfn8TTPnRFvc?= =?us-ascii?Q?6KZPylaH7InK1xpJmceoCox22ZRDcK+qN3+7osR+Ez+Z1VPTiWj9TIkz0L/D?= =?us-ascii?Q?P1ZGXAHc5aNcYx6g/SyZM0tI+zHnoAaG0iXJS5goZBIkGKdD0g/RAEnrEzUF?= =?us-ascii?Q?koFGLTY9pKT5zY4nhn+CgW7IT1hs5RyrUM7hIsRQfuYB9bgk9iU2kEVYPHfr?= =?us-ascii?Q?KaCKrZAGTKkdQljTxH6VpyiCUAyJYbDkxB4Qi5RCXJbt4E56G4BwnVld/muS?= =?us-ascii?Q?XWqvkUA6TDx4b5x9fnaBJo0WkMnvyG3AE0oAcLWotuGpmemo1Vmj/mjWJEwa?= =?us-ascii?Q?07+ksptCO8nITfzOtvkTS7E2?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55e62b1b-a387-40db-c513-08d91ebf24e4 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:55.7778 (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: CzCIfT+w/LUqHnFH9859TvGgsKQdqZWdDjWMfO+xuIVprL2CaEI434GIk0gyU2PyBaSvClq4/EU1mTgL3p6eGQ308fpttcTy9z8Fkbq4ryQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai --- block/qcow2.h | 1 + block/qcow2-refcount.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/block/qcow2.h b/block/qcow2.h index b8b1093b61..58fd7f1678 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -586,6 +586,7 @@ typedef enum QCow2MetadataOverlap { (QCOW2_OL_CACHED | QCOW2_OL_INACTIVE_L2) =20 #define L1E_OFFSET_MASK 0x00fffffffffffe00ULL +#define L1E_RESERVED_MASK 0x7f000000000001ffULL #define L2E_OFFSET_MASK 0x00fffffffffffe00ULL #define L2E_STD_RESERVED_MASK 0x3f000000000001feULL =20 diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index adebb15598..5903e058b9 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1904,6 +1904,12 @@ static int check_refcounts_l1(BlockDriverState *bs, continue; } =20 + if (l1_table[i] & L1E_RESERVED_MASK) { + fprintf(stderr, "ERROR found L1 entry with reserved bits set: " + "%" PRIx64 "\n", l1_table[i]); + res->corruptions++; + } + l2_offset =3D l1_table[i] & L1E_OFFSET_MASK; =20 /* Mark L2 table as used */ --=20 2.29.2 From nobody Tue Apr 30 12:23:14 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1621866614; cv=pass; d=zohomail.com; s=zohoarc; b=MZdxzXXF/5FWP+eIhVibFyGhLZ+09jb4KvwaiSJ+1lLse8AadV1lA3cbufevUPKuibclyAlGwJyyPXDAPxnKV7hEy8Wt4oIE9109xiovAYJiGB23tQDT3kpmIyPCHlbbxQ8wXzoKL27eHtgalghUGZoiZcMjFzErXQKjJnSdyug= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621866614; 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=vGIeXweqjWBYfTbxtvWgxLwtm66/7rHUR02FO5Hkh78=; b=Ejzhnxgp4U5nWwkli7P7nCl63L2M2EDk0pfIQex1H6TFu49z6NEnULF8JMTe9EXCmn84aOAfl4D5EGewKpmT14LIo6VZH8hlEGhjkeI+Ou8+HrNVUkRKfrN/XWi5p77Wn9vWxhrLJ1Vy1+aEDuLmRyf7N7dJfyy9ziM7N+rmbQM= 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=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621866614157135.35583472881854; Mon, 24 May 2021 07:30:14 -0700 (PDT) Received: from localhost ([::1]:46404 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBau-0000gh-W2 for importer2@patchew.org; Mon, 24 May 2021 10:30:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSD-0007Sk-AT; Mon, 24 May 2021 10:21:13 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-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 1llBSB-0006u5-EH; Mon, 24 May 2021 10:21:12 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:56 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:56 +0000 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R2muKFDzaObgALBu/1QrXRwnOGE+suMEF7RAFZclAeu1Ya+HOqeQR/5kbhJSbOfSawMAs0QsqM9zd89nd9wjBxePW+FHKIp5GheJ4bvL68MLYA88tGkANjhZ9TXaey4V6A+YNviNShWrRMv8Mh1MHsVyzyAYY08jcUJICTCT8cg9vnF0QW06yT7q+ZLppzf7YXXp2yK1jp/8FrBg66ES/Az8HzRp69S8Dli8RhRfrb2/Z9CGb2I8UaSKxg9Uce7KRMfd34Igr3RSMWCr+73aHp5qzEJhNT8f+VEP9niREWx6uW0vnr2Dm39ggXAH1f9IWElPKDGELPH+KADj8M6Jaw== 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-SenderADCheck; bh=vGIeXweqjWBYfTbxtvWgxLwtm66/7rHUR02FO5Hkh78=; b=csh9xX5JfzkTUdVt5Dy7V3biRN3i+sydDEePTyNVAwllOKdOSiTTV14OFPDK0ZRfoW9SP4ouS4pbzFFbC7rxxf/nfV2KlwO4+wBS2HV9E06GMFCb1lffwGlKnFS+RJqmStTTVsXHl5bVbubvKYNCHZx6vrUML+vV+pW75mjeCLjEXjHGIE0mBOMxIu6mD7sG5+GetxmyBz3inTzg8h9c2ZfohSoCTtWqDh8fwaPhwYHuRDi9WNnZEB5dze4H3R1Kqsafxh3GdB8mOp7bfTLQ6ueqOZtS318d6503nqsXZ45delC9vZsUdt/Sy785uvdkpyru/TcCLW9tyy8qQHv0hg== 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=vGIeXweqjWBYfTbxtvWgxLwtm66/7rHUR02FO5Hkh78=; b=bA1AynA0oqBLDSR1ijG+ZFUwIFeM4Egdo4SfYtbBhO7WMDO7BILKDuldBHRUEoFh5LcR2jt0ekbyUheRqas5ICnrLb9ivrznJd54m5BnfCFCzxgyRyPBedoGOrOIRgR/hFY8QGlx4QgW4KIatiuqfDa5TsbMjFSnyQSh1naiBAE= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 10/10] qcow2-refcount: check_refblocks(): add separate message for reserved Date: Mon, 24 May 2021 17:20:31 +0300 Message-Id: <20210524142031.142109-11-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d6414ef-a517-4390-163d-08d91ebf2594 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:198; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VT/1lA5fA3+PaKc0NF/X9nSPYGd9QUL8Y+SGT0Wyr2nMbJKus2DgDepFpwZG3z+9ab96ejGWljLrl8T8F6EQy24vxc3yB7lv9x59NHivYE9qP5AY3qS26PHulXZ9XBR9AtakAKfH8FySXO0+CVmem2wQ2UN5gY1gosYJaw0MtRmZUfXcmcZ1OGaFg8UNjt9SWAdbmZJpY7oPWuvUAygpDAHVfP82MZzbIp5M5NZJBpLrAHh3+vz/2d1J5QuEJXF6IHFNiyYyuEoAwyveHbpj5RIHWVqfWxeYg3TLrKIK8kTD729AhOdbUZd62Yqtb8Vf5r+80KzyLHAsgFlK+lsPLXSQfuLs+N4ebUES4KvYcUtnZ9ncA5cvxiVqWdYWPGT4nfjrVq42uUzihK7fj0ZMU4gG+Jr9RhGN3UBlCYlkDKaeCt2Hhf6jhZITWOY1SWx2Iqs1Fgc+zjr+5cZUeKQiflMLhdh7NARbLZNlULyiv+jcX3TgKPakCTcrcMwNL2zYZjoZjlLZ2fJ6PI49diI/2NzDtyeeDHCZCzLF3V+Qo0b9H7rgNpJ5aKvyKMpwUB4YdOgN+9dFxfcjfCyeAGaAonnl/yJHi6VPS1Ap07aA/vu6DQJL7bsvpvLXhIQRFthwdgFjqjF6GbznnjMjk363Iss6fdNCoRiCaj72vOlwtLpmY026DY9Z20jtidOawqdS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?5vQU0RCpfh2cEC5yX823SLIUsUqF/5nswroiS6ReWlICIlTYQPxtBEVGaG/7?= =?us-ascii?Q?oMbkdzeb+dwbeTgL6zsFot4cxKMMq4W0172zI6aOLoYpTnR2kwOhTlS1mDy2?= =?us-ascii?Q?3bv6HV1CSOOeyDX0LA4CqlQM0edt4A71YvnHR2wuMjOpjF9w/K8XkVIwQpbf?= =?us-ascii?Q?UsrJo4IznwoViWkUG6WVqBVqMaPtFVLEg+DDRu4351sNcC0C7d44z5SocXSP?= =?us-ascii?Q?VdNOoyfLnKwbYgO4CvgK4X4Bk6IjdfLqrlPTYGDLm9XaNJ43Fut9DkZVBZnK?= =?us-ascii?Q?KIai0lgNRfKhTpKWUDf1Cu96JqaLJgfbs6D3Cl3ryL7uTYiDG9Gn01sLSWOG?= =?us-ascii?Q?xPaGp/aKAOO7OxH5FmcNZ7K+NgG58gWbczNhg1xeB6TRfgP2GsUQK+/4SHky?= =?us-ascii?Q?dtqW5YxPPcN5exBECUVSoSA/FN/L3ienHTBprs2JFNvGVJV8zp88s+9rFYmM?= =?us-ascii?Q?/Nn4yIljYt9+2qjb6d6E97bCve71+krx2RyR3/O5c+wg7LJghidxQScNiVAq?= =?us-ascii?Q?sZAHkcWkKoJgEPSW3IRr0LIQYw92e8V6upxzYVcF9PjuQj2P1jeJIOaMK7pr?= =?us-ascii?Q?sTeUxOUP4jUftDBQu3PBXHU2ATM+XrV5Iak00ag6e5jQ80LVUsu2Cpg09cz+?= =?us-ascii?Q?vRlQLHrmJGV0rk+RPjeFV4kQkEpeaFY0hkkk9dyUFT0VnoRRFwaegE4Mhbuq?= =?us-ascii?Q?xWBZhjHT4bxnXyxw6zEFPCuFhYDkfepJNeISHsYdKCx8CrMR8AypCBrsm4C3?= =?us-ascii?Q?6nIVBOASa7khBwfVsdrdZFnDkafybhkZKWK6aoxWAZ10iFimk7NGkTl0A81Z?= =?us-ascii?Q?C/QPsa/g2m3OiwRmSx3bsJ4QNqM9Hn8GWNkKC4edfzOZ5OjqUKgaYmgTxQCu?= =?us-ascii?Q?h1kFAI9ogfsluyaOKv2I/g8nF0aYUyMXDFZdl7XlZzKBa5No8mnjhKiNzUjk?= =?us-ascii?Q?aiYIUiASRg1O0qhqUTgtHEHQmWdRysDLZxlQyc9kpBCG2DBHyW0IpYeR7tlN?= =?us-ascii?Q?BLdVm5soeIwdIeA0aVetllhKsnkWSJjcyqhcD+QLtgjEM8dtSUZEsORkjtzt?= =?us-ascii?Q?I1jzLCf7/Cfc0AGMrUpp1KRuQ0pCqvqcozh2dw1yVn/LaYPrPbvGU9Een5v5?= =?us-ascii?Q?4BARsLcRF/GEbxKoU79FGprq7log/AtgEZf8HLfMCi/a2MWl38e9DbeMd2+K?= =?us-ascii?Q?X9yx/+7ewZYr9aCgB3h5sAstH9IDjeghjsA37DSdrKTgJXeQZDL13JqCkPc8?= =?us-ascii?Q?5iw9f9NTLh0Pri95Cif/ihF7/s3BqwJvHa/5pnDtLxqyw/NYumGmafnbkHa0?= =?us-ascii?Q?VhyH7HsyaoQwTf7Em944Od6F?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d6414ef-a517-4390-163d-08d91ebf2594 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:56.8859 (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: xGSBAiaSZryId69TEyxCi3YKzt/LLVJvPg8OVxlLUW2+/uBpqGbTR+weP3nNtayiqCBxizU3Y3l7khS8dyg3vY9W3975X6oZ7iwGm0iOico= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 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=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-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, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Split checking for reserved bits out of aligned offset check. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai --- block/qcow2.h | 1 + block/qcow2-refcount.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/block/qcow2.h b/block/qcow2.h index 58fd7f1678..fd48a89d45 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -591,6 +591,7 @@ typedef enum QCow2MetadataOverlap { #define L2E_STD_RESERVED_MASK 0x3f000000000001feULL =20 #define REFT_OFFSET_MASK 0xfffffffffffffe00ULL +#define REFT_RESERVED_MASK 0x1ffULL =20 #define INV_OFFSET (-1ULL) =20 diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 5903e058b9..57311c5610 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -2091,9 +2091,17 @@ static int check_refblocks(BlockDriverState *bs, Bdr= vCheckResult *res, =20 for(i =3D 0; i < s->refcount_table_size; i++) { uint64_t offset, cluster; - offset =3D s->refcount_table[i]; + offset =3D s->refcount_table[i] & REFT_OFFSET_MASK; cluster =3D offset >> s->cluster_bits; =20 + if (s->refcount_table[i] & REFT_RESERVED_MASK) { + fprintf(stderr, "ERROR refcount table entry %" PRId64 " has " + "reserved bits set\n", i); + res->corruptions++; + *rebuild =3D true; + continue; + } + /* Refcount blocks are cluster aligned */ if (offset_into_cluster(s, offset)) { fprintf(stderr, "ERROR refcount block %" PRId64 " is not " --=20 2.29.2