From nobody Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620141810; cv=pass; d=zohomail.com; s=zohoarc; b=bV1eYR+9aJOW0hjSdIKDf5wxlIYyVQmyVSDpHg0/UUoa31gXScfOjquke4yLrCxQmZ3Ahjo5z7U7+7q3UFnaNVKTkV5x0vMeZPwyl24NNGbhpA/5aL4ODMfu6iZdTCdxjrCyoh/Ut6yUXwZ/5FNQoN6kitdfe6OBeoIj6rUMoks= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620141810; 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=qeAcfjI/zkzlDiEQSP46ONeH2XpYEfqHZddK2k4+K+o=; b=PSQgkX7szxfTB+sq8RZDpfync+M/BB1QNxrqXqLToeduDcsIsb7tjZ5mFjiIvJw9qYEHaoWQRXgji5uI3Oqz//6djzLL1axjaGEGJqwADgABWX9yK0vU6YXR60QsXUnBjW8Bcx6MXfojSNtxUssjpTKghYHrdw9GH6ZsOx/ylx0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620141810005944.1441844330876; Tue, 4 May 2021 08:23:30 -0700 (PDT) Received: from localhost ([::1]:40708 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwtU-0005Pn-2U for importer@patchew.org; Tue, 04 May 2021 11:23:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42706) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwrl-0003d1-Dj; Tue, 04 May 2021 11:21:41 -0400 Received: from mail-eopbgr80102.outbound.protection.outlook.com ([40.107.8.102]:61999 helo=EUR04-VI1-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 1ldwrj-0006zb-I6; Tue, 04 May 2021 11:21:41 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:28 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:28 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jbO1c3i6blMx/m6PGRrJEi3QRf/4d0js4f8B/7op9ac2uhykv28T0M0si8yGlZCpaI6aIYmoECkTioIKqd/A5dsoRBb8LdmOHJAsyodn2cQFm7UmnYcfdn4GiFofGZfWFakSPx10KjW0NMQK3u+vKTSC9KrFnonpir/+7apAVsRyXDrQFFU6GFsf0XrqseIZaQYD7EaaQ4/DdyxaCsTvr0M9eUc4z8BGZcO20bV6f9zXuDQVlYlTCjS5wWuTeatXHRTYdHKIr/yc96r4zvK1L9v8YQYJNJVVHLaOV0Ta1fH/1N+IRJ4GSnrEjg6gurG8vR/SnkHkEzS23CxpqVN9KQ== 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=qeAcfjI/zkzlDiEQSP46ONeH2XpYEfqHZddK2k4+K+o=; b=B3d/Vc7SIKkYkdGzKCFECGmoG8S++ZLm/46cFd2E+qL5IY9S4p8u7lmGVNr+fROtxRIlyEmmxwCDqmLvPczywKgk7cKdMDa3qi4QhEwstGlGSpR7nA6ZWmUirh5IKL2glvrBteVWLGzp8IDJu406s8wANhIpQCP+otOMKkd0Yn4MvVA5BLrjzix7FRUjzPIvekjpyvCMvSwJLRZmUly7B4/4kO4mA00PPal0uigq0368yfgQI/QwCTSngiFhYDVou2XPIQBJ1w54mBkus2xAQtBgnEJM80AZAThpvBox14q0DVXzg1Oc6XkwCHDc7abIN3Am1VWyd+wMFIfNArx9Ng== 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=qeAcfjI/zkzlDiEQSP46ONeH2XpYEfqHZddK2k4+K+o=; b=aMMXlWJo4XlOzNayjafmESiOgdtopCHwjAEFDncfDPb9y8oNfr6STvVq3+KPWCMTpE+H3/F+ogFycifFnXSb6Ez9X7rKS4KdWbChF9dyBEJ/P+o/E18M/zt9IDpSQWVECc1o96zJDJ3lpzx8xB7NgHyFamf/ww0bza2RCg3sl2Q= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 01/10] qcow2-refcount: improve style of check_refcounts_l2() Date: Tue, 4 May 2021 18:20:14 +0300 Message-Id: <20210504152023.322862-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: 8c441787-5b35-48a9-0265-08d90f1049c8 X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: StTVB4WowFk69XMSgdW2qLSKU3tviGC+X3o9FlC2alco2x2wKWW3UeBKLbD8AW1fzi4LpWtblZTOSHZYVjc7/o9ryB3XxxoKXkBKPneaTLTp4MVdxMslAb/KrJJg80CBJA9zI9usL8A602ftJjVimFneYJXC8BCh1ZE8YCfDQunTu3RCq5SlDpoq9wS126AWHSQ5yo1YCd7odA1eM5q1w2mZpY789V9JkVFPQFEg6n/Vq8ogvpZlJVGA6mwuTWjmDwWq+FSqxL9J6vNJhjrI0k2p0Q6boAemxiAmliG0TS+VmE80wFyfpe0/DIergtkKPL/wIz/MsNce50FpN7BPeKMpFm1FYdi9TkJJuVJiapqRkKRx7pIwBjECYjs1ZIahRgpn1vfgTmjmtdecxCvT8Nt1CR+NagRpHE5TKRIgihpCA/xWLj9zWdP5GyUSjP/BWNbbBgaPsH4uqnbTYRqJuLREm7+6p4WQ84QSwOIB9Afs4goNViD8CngqJiS9AnsNakirOuApsUtilZdcuwgfGoAkOJohKapH4s2ci77MoJk/9sd3raDG/hz4Z5ahqJWbuHwrDH83drAMnr3dzuzO9qUSj45lSOoRTjUXqx0J5QVOUA2vmLjXDuUVgreNNqn6FRpR9Ug/KHrPnhr8b9JqWAZdGmaY+fVPXSsDFMuAtEUqfJOgIAJQNsQjSNou/gtX 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?pWy+wvHs8pYaDhmLmHbwYjH6JpjeeZ7keOXO0ZSs1JtPJd82oZRPhz6r/4hF?= =?us-ascii?Q?TrQzxMHBxnYKJzNtUV6jl7BA0pD+yKD167iFXSCxEodFagQos5DZy3VH7oBi?= =?us-ascii?Q?33EKlhDywYb7dBJg8ysu9mmf5E5gsdABJ1KAqkgxAxaEsBLOSaQGy51DfUgp?= =?us-ascii?Q?cQex3wPYVoSDq/XCx2ruiL5eqEIPlJNNeU2szAXjhDop/4cwUb3s0mNS0I6h?= =?us-ascii?Q?AzffhIwc1GOBqW8hQtYIMCXOQz7z5w1+3ucOemek4cohNDalnKyw5LOZXHkg?= =?us-ascii?Q?eQgwD/2UXZyek9StjJT7zrJDRYP/R7kacErffY+fboXYxL/TuBo9MMNP0hnc?= =?us-ascii?Q?c6KUfGBYVpZTW6uIjACMtBAFRXGnVWdCe6wf+CPCWM/glxTYk+m42dpNfxn9?= =?us-ascii?Q?mHqbUJBR9ASqYibJgU9JjC0ZI+v+pibYTcpBEiX+PVM4u0if2NwaxiawF+dV?= =?us-ascii?Q?uodC5utAOxtCBcW0JjCE7Wa5KLt2vaVU4YPS0ljbGze/0eMj5Yxci12gW6MQ?= =?us-ascii?Q?8YOSAkVcVhQmoKbWZf17MkZJ8hqU8bFBXVGaYO/p/iZabdegxlhBfWPKXL5f?= =?us-ascii?Q?nG9/2sGqJuk9N3s5p8x4cNyYPBSYywPmPjBfraghvF+pOXh4NjpxZloVTVDM?= =?us-ascii?Q?Y6anAfczGP3wuFUVZkZhEaA9zzfu6vrBAMren+GiI/pRfV8Slst63qPstI4w?= =?us-ascii?Q?AW0FjOg7i4QUIK4Cxr8pM1KWXhBK1528jXqkWGVjjMNeNPuwIBQ6DnZpnmQe?= =?us-ascii?Q?26tqeFL8q4YDX5cLSug9wC9d3XF50GLaEyzG/GEfDb7R0XGUEC95m4gJQOjm?= =?us-ascii?Q?PX6eeKlv/ZE+ikPcy950KeEHwXjmrWrPuE30lTtQQ9GDAEim14V/LQdrI5+M?= =?us-ascii?Q?rZtC9v29XS8kDCzC6Q/CzpMVDCNXSMZMv1ZVzjKEDwzHceHNgT1yVAVXxu3d?= =?us-ascii?Q?Vs0M/YVq6fNubdLWjZJ2A3ZFd7PBdDdObhs9qr4gsgTG28IX07bKxOmVAJ17?= =?us-ascii?Q?5hgVj+xRoeWaMnTvmEb1WMOE1e2V1+r+Q5tJCyPauajyhLWsnnwE6VHuTPNu?= =?us-ascii?Q?MS0Ytmnp0Wz9L7HsQoGeRzk7Ol+Z4Eu09zRP2bsuJGa0xoFL/Z33GKD5JJGx?= =?us-ascii?Q?vt1Y1qWCWYJej0crkJ+5aSndhcfEdOKO2IibGi4IIG9C8McQR/KFSF1DpHE0?= =?us-ascii?Q?3MRyWcf62M7WH0GgndHVIgCWXhamtISgxhU6QUrK0rNE9BJr4s/f0eCLo6j5?= =?us-ascii?Q?U34loI8frLpAt6dfiP+tJ8/6o2Sh5nwEc+tYNEAK4lcEyHdBR3kkBwuRcEkC?= =?us-ascii?Q?tYLV0JJhlqI/syK3ZVyZwL3g?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c441787-5b35-48a9-0265-08d90f1049c8 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:28.3225 (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: GgYPEbBySg7725lfiYDYh8lKL4W6SvDqrpJ+QPYbXd9brapN33u1plRx7kdlTdiQUGViBX/2ujvTPL22tIfv5B/jWPwOVT3ly0vzABa3rtc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-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+importer=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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620142417; cv=pass; d=zohomail.com; s=zohoarc; b=KQ0+Llhvspi+L+85FTYss3hjZPz/UFnvZkmTEmfTQeBR7XIZqXkExHR+MoO6t99BJ21W2QA30xDkeBuLgjeUwwsw8bfjbmFjbCgXfw6b9aWAXm+76tymSIC01qzVsf082V63eZxRWTMHzAdST/zNAmPRecM0i166oFEKtc8KgYw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620142417; 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=Bz+c/369NlV3tQVgiVsR6mp8iCYXUcN8vmKgKBl37go=; b=VnG6I56O0qyuGZHOuV22NAW1zIAdxWfZApUkcqIttRCGbu2WQjrWu/3YqbrtCE8ZgZ/iBt/lSHe/JnXkpvbemRPhjsJMfwxUi8R7ropBlWfXqA3H8jbI+pFUcJN5f4UxJQ8+mVGNbsCkNBaVOA6OgALn1v4rPw+Wr982MSIsPyE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 16201424174769.975118927167387; Tue, 4 May 2021 08:33:37 -0700 (PDT) Received: from localhost ([::1]:34486 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldx3H-0006Rk-Tj for importer@patchew.org; Tue, 04 May 2021 11:33:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42878) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldws1-0004AF-3g; Tue, 04 May 2021 11:21:58 -0400 Received: from mail-eopbgr80102.outbound.protection.outlook.com ([40.107.8.102]:61999 helo=EUR04-VI1-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 1ldwrz-0006zb-Dr; Tue, 04 May 2021 11:21:56 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:29 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:29 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=epdkC18H8a8DLJcnbtFi/oq6lD1n0dIxMUmkkkABaklWvs6NP78Fwb6DT4CTfNf75QgZSaLntTaN/9gedygYoKe6z+jCYDYVsxNPsZVhfMMlEvt5pld29a9A0sL4C401s+1+xepnNxq/2CyawqToUVNsBvHb2kor9pkpcITDGcBKr+aYzkYzR51RO6mGPk799OAAhe+quM9/DER9c+V1yWvNW3B8kndqYrBRF9lrY+n1dl+iYjBXyHXoOaOqaQC3zpZ+luhgfH1stZQtLUAOG5d07Bt9zNR1elHBC2Wh97DZWCzo5kcPUDHeNZmJCu5kYxp6crnul46UTvTwrV4CtA== 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=Bz+c/369NlV3tQVgiVsR6mp8iCYXUcN8vmKgKBl37go=; b=eOIXhqk0VC1D53XoJijHCthk5gx4eJFhB+Xb8C8fMuUKizROXCT+hI92VQP+9+I4rpHSoiEh4Iy1L6Hho11UJM54WhvbfHcDk7Q/vbOhKXQoEUvsvSwYyI/yC0HOlvWh/arP7mQk6bhKUgJwBZrvFCygXVLEw3cth7J92g3ULFu+BxQ6WrTARhIpTYP3yPphgOVQMpDTgB8sYY4xwX8CQJsT6q5Wy2uS/bHsLTwYFG8LFhzlLHl/WJ6SmTvnPrLSmGsGkwlRk5nFa1XVN47Orod1VBgGtkLC2pxRHQim3JdhTWKyD4e8nOJU3pMm36duTRJ0RA4VV6cp3kLxQK9lrw== 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=Bz+c/369NlV3tQVgiVsR6mp8iCYXUcN8vmKgKBl37go=; b=XBEdUZMy5sjFUMJfnxv2tQT/eIWUavfea/D8ySEbVimrENHp8piyoC4pnGVYj5b8I+KVwJNA1axBpZWbB0GREaw89dAgS3dZ8KVODkyvPtMfGTOtCyZpbhEHRmOXwNjBtKEtiGSvPV3t3TYUtPw2+y56J5zaG2uE9iLxX1AUUTg= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 02/10] qcow2: compressed read: simplify cluster descriptor passing Date: Tue, 4 May 2021 18:20:15 +0300 Message-Id: <20210504152023.322862-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: d1b08fa3-be9b-48ec-6ca9-08d90f104a63 X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: Sm1T/QnIRf/qz5XCAjrmNdGCdERZbgtKYApdDiRGBOkNSjwiNWp0WyzvPBQZVh81P7Y52u+xFDwNCogBkEMtgttbnMYbwS9vjBR+klpsCeuRHkpnc+69x1wkOHdnSnbGSzxsXkwB834BuJ8G4md1JMZyWZmbk8Dpi1L7GJQytVag4Bon9Zxqf9nwNfVvtEzzqsYljQcyh/DnObWfjWdZ51i3tLETUj8e3mTI5UxK0AdS1NXbcNS+lzbAnyruNJSWqzR45h7rvEWJdjVDzRfiBE1BQWW9R6IfSd3QS/fP6D+EehG/qihkcTAYmHCB8yvoAeOiZApM/Cq8vA3sOjw3+n6aNryiBLGou42kR/YaJ/Af7cPX9IrcSqpME/519MWAwMvFvs+vM935UCCTJCFvGPye9RCrxpsfo3GP9HJ2BmWflrWJ7J8g3kZBxSfuJEmCUcYa5JrZk5RFcszbCykQwtIFWtSv91dmO8NSFZG7HWKOurf/9dSkPvELu/EuNC6/HAjr8gT5b0ynw1P6BAxbA8uom8d0z5vcEgX8UcYVfpVukpF1S7Ly47+flbvMIF/621++uTU39BoJ/Iq/GUClD2yVDHTNDNXIBbPouWtfS92hZzWxCRf+KjtwTZ3sM+nMDYL6EGz8pW9MgtIyGtfeRUMJlhc4WdYX3EAyGtiS6QCO8OM/zuW6jdxrU60eIRJa 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(19627235002)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?g0QfaDegL8D6crYS+A+wglQmx9QJs+UPfYvWM3MI6VEPMv7LifQ9FA3Kba9V?= =?us-ascii?Q?Q7jpW9Nk1Kzc5gBt82YFvL3z6aUfRFJizOp1MS4ORhadtCgwlqIyLOpwVMML?= =?us-ascii?Q?ztf98YaG0E0L155QHgBxi8iFpE50HlvW3UgrybMxck+t6HVBZGqZJ0XOrR+q?= =?us-ascii?Q?w7mKCBdA9eKxeXtj0AChd4lZ5LmZ45P0OoHhc8wGBwvNTVqECef70qfog0Aj?= =?us-ascii?Q?2Z9rxJsGXZ9bDLy4bFh2xXMeDDY0ys99q11/747NLBF8yheayynixxqfqTWc?= =?us-ascii?Q?XV+Z8ouc+BxbrmQhd4auoBErxBc48rBCJqS5v9qnW/DlV/Ilm3Re7YuZ1Xyu?= =?us-ascii?Q?QAPnqcNiYFfdYsYsT6pFKW02XLBUZt81UjEqrzeG7r31D/1DNwqzzXjHvMXP?= =?us-ascii?Q?rKk4Aytc5tmPuQTX7/07N+9j6BNg1eB281uKKtUz6MzVIx8x6f2bczzrxW80?= =?us-ascii?Q?7JdehaptSPE4+YERttgry1EbnCOEIJKrcfQ3X4dprtBEgOdoGNVv+RYfLflj?= =?us-ascii?Q?vty4/ymgYwt4s9leK+YO5KDAkCcnM7n9HUxW3X1RdnLFQvLYOtUKQWaYXMgX?= =?us-ascii?Q?EdxYpUKcxCJhRkswXr0rI9ERtdxebgz3v1QZ1/yJldwejOmwu80Fq7fHqNwr?= =?us-ascii?Q?g5mUmp5/yZILkkAqJ/UwZs4JdLafa6RPrOzPo7bJEYid0zZU1tkF82H9zp5V?= =?us-ascii?Q?cjsVIF4QRoNQviqv5E2pjCU5q9RtfbnERAhD1LwhpAVNLO5d9uAl+vbVwnW3?= =?us-ascii?Q?LqoOUQsSueSFz8KV3UBPdrHKBCDHXLQoT/iPal5cYoOB52pTJ898qWWkjxRF?= =?us-ascii?Q?yn5QilKF89/SHR4+Y7RglUi3YdsRlZm0OQv6iRgVpRtn/CzmLSmxu461Pf0P?= =?us-ascii?Q?ONddjWJ7GtBWotMNF+DKHg1XLxjQvMAH/LDSR0FBn/fib204J6rP4HYctdVP?= =?us-ascii?Q?+MJQIYhHU7zk3kG7iVobbQkPmDA+RJhc1RNR9jxwETid1MP9fKDmR1GLdXCJ?= =?us-ascii?Q?m+Dw8AbdmJWKGzblBhrqxUHaBY3NccgwmFbZ/5OGbdAYktgzr0O+8qcM3XBR?= =?us-ascii?Q?t/jj5D3aUMocTNwzlsScFm5HkhsxMsGCcT+NHX+FCeIljt7Bgnekf6sYkU5g?= =?us-ascii?Q?gMHpKtLHB7bwojdUCnC0sfpRhuy7dVouickvHZWyW1ZNCNCtNrHSQQM0ou4J?= =?us-ascii?Q?8QIuIeAOEWzW7F1jAMuBglW75hTRhdOKiOqKiN3+3uB+uSRJzTtNp9l71ryx?= =?us-ascii?Q?HJppaBdAto3C7azzMl2qhgWWePBvmOlWvxOu6FTNp2dQ01BAH4uuaACLtSen?= =?us-ascii?Q?j1XEghfNdxYK29A+eMcbXXNo?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1b08fa3-be9b-48ec-6ca9-08d90f104a63 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:29.3042 (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: FM+3Wwzs+l7qSTF1HWAwfDTSBvqt0aDZLukZ3Gwx5uGWbTnTp7Eu4X2K9o81+1oNQbg+QJ4ji84XR8/MLi95f8rc3trrrcLgReZk8bUDD5o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-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+importer=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 --- 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 9727ae8fe3..746ae85b89 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620141979; cv=pass; d=zohomail.com; s=zohoarc; b=I6u5Pe6zC9zO1qZG0kJNzwasfFZN3RbO78pNcqQ8cbg0/v1jL7FXKdOzqMdbsNHbdDf+qVgbXvH0sA43/xFA0mY7sUluuQAlRxsnxy7AxcY9mPvliKP46lT6Rq+Uc16dga07AhLkR6XTZsAaAzlKhdVWC3wX6/hGw/qEoaRs2so= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620141979; 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=9GdXUqycvfE+4MVhS7K1tTI5bgyDA/qZB0S7CeN2Cqc=; b=YvHcMRauOBdKfdjarxC/FLr89yB3Z3HzjGPsVDGoGz9B7jWK83XLFDYwsgjAj/wGib8rDLVW/wh/4Q471HVLpBkEYsyp4lpP4AnIoi+K7U3uMfGbGqBSuQqnrdyNRSphcgxQZ8eblkMKwRuMrsCgqJ5yeDXHwfPz8mF9t39GQ38= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620141979733893.7428665490497; Tue, 4 May 2021 08:26:19 -0700 (PDT) Received: from localhost ([::1]:48824 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwwE-0000Dk-Gd for importer@patchew.org; Tue, 04 May 2021 11:26:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42736) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwrn-0003gs-JC; Tue, 04 May 2021 11:21:43 -0400 Received: from mail-eopbgr20111.outbound.protection.outlook.com ([40.107.2.111]:7358 helo=EUR02-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 1ldwrl-000711-DQ; Tue, 04 May 2021 11:21:43 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:30 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:30 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PBqAX2jmoodOPRzjKKvv/5a4wAKPnO4xgb1nz2MOC1rhaOMGUfHVTbJv4weQimzuXaFMXXbD8gf8YW4DQjEJojNDstaIP4UpmgSSneMxqGpvy4PpftaW/QrPHkv6m17HPUiD4Rcf/oKvQQYto5pFqFP4vLvOFwPfcjUaTijRzfhxm9r0tKr+XExMqGDgYyHHbaY343aRQbSJeTrY9722Zr5W9MZRni/FDZhPrBSjV1TADkWl3UdOREQgKdZ+t6EiqvkAgw/hiMy+DOXdsQ2xjV0G2mPZ6Y+BZuotHqqcPI/RjncHoaHVJFSjBMWnHKP+S8GlWq/OjhU7cloygxH8pA== 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=9GdXUqycvfE+4MVhS7K1tTI5bgyDA/qZB0S7CeN2Cqc=; b=oDlfYu9qDprY5r/5rUHNTFb0IbG9RMgYHSSQ0r5FZG+RAr/ZdPkyDQbMJEaviCrBVitFAGz1OKB1z63eVEHBNzQthQ1A1DNW0QtwQCIH0FD67AeamPkDxqH/iGptnPS6U1ecgJTdVGQQIFFAzgyqD+1XJucENb4yrqy8O3X8LPvK4KiWrMzL6c+aUxKcwia8FdcN8jvzfqtMSXFd3roYDBiXYR6hsec4ED11aPfwiX3eS2+gMM5jVTNgH4uci0tEVYuwNYdyGVne3PAqfkMNeCi5Q3U90CQTiwZ43t2RcIzc1OUtp9EJfP+TiDoNgpp6V5fJ4bzc6AbZzl5qxm3ljQ== 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=9GdXUqycvfE+4MVhS7K1tTI5bgyDA/qZB0S7CeN2Cqc=; b=DDYxPksrCI78fLHxY8h18gvJii0u1adFybXipBHSDHSJivfqGMdISEcK2HRIlqF9Q781OGsJRDjKIlT55Kg9/OcBWQ5MRop+dihznajuWYgVM2SO6inYDCue9tU5wyEQp/zWTwzgy9jWXiARL8ON4r2CBRQEXvL8vHl89nky/bo= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 03/10] qcow2: introduce qcow2_parse_compressed_l2_entry() helper Date: Tue, 4 May 2021 18:20:16 +0300 Message-Id: <20210504152023.322862-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: 30640879-0231-4da6-5501-08d90f104af6 X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: BqY3pgVyKWR+aOnKmAncjD//s7Jk7cVDYOXx/lcNCidqlohDcnKil0SzHgdMIvDk++IagifOK3CfYnFFpVPnD9Xn4UUMNsWDCiGCG4jjLaGaSVHbLoHOH9XWvOY7P/qZl7XZUODttYqLBM64nN7kXB93v34A4osFQXCcA4zqpSBEP3QGfExPVkbTv0HHnlwR7e5mcyiM5Wp2T1pIqXZI1Tu+w/igwHUOqjosQHuXVgzeszdFMs/ZjwROnnX1yTmXJGC3NK63vHJpXOxs8mK60PF1ZmJm+idK4fSbwCBArZYHIgH7JaVIGhqFRKBzkzZ4fGOocBx9V44YsBumVevfjFILDRFlHb1UuTlRRxhKGq7F4jRP01fEgeidKqpiwYqqnqjtexMcQwBPGLsUyogynNN7oGIS8yuA18DdIZksv2GbMr+fDJ3d5Gjvds4fleGcQa64NejghjyH7Tdbo5II6I09zHOUgRYd9DTVmYi/FGS2StN7OPbxLKtuuLh862y/9IXOg1k0JJ/LIhkbRblUC9lerVgcuvxsYmxd8I2Xr8K67DD5heJ5m2OfX3Z/QEJLtKpObbx1cllpubKzjNBUIOhTGXHOmA+kmq1PDEnyOO7qxdnD78cB5jCiVV/vEj5FQNZ5yfXlu+3PO2JgAEPW4SV2g/LDoa4f0BrABF31wu5phRNgnxKzzawaBjB1AIJ6 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?N7/Z9+f3V0VPCPrCeu5CNQJTzcSTRuWHIV7OOeG00a1mKt35MJeMjiEQZweR?= =?us-ascii?Q?o93BuuEOH4N2mHWyLn9vUO0zVnw/mlbZ+sExguc9aCoTNq6nuoPnJfBW+tEg?= =?us-ascii?Q?6ATMbvFQPGp0us1eAbwz4Af9/Z62hID6TcWmDkzWO6NfP40wqd/ooFJZwqDt?= =?us-ascii?Q?HHn+tCd0FyGC+mI/qxNQI9qAmEaHuhvAOX3ZLo0Xp1bfzOTf0QxvqrIQY22f?= =?us-ascii?Q?OXv7HF/CNF+edAx3AZ+krcw3f/Tg7ektTZ5OEMzRQNKK30O4A4raw1ibfpHO?= =?us-ascii?Q?OnqalhoHRcE+Z5ulUDBdeU22yMOKN+24NmCnZt/nhDz9Mp7oHiLV+yCVHGWK?= =?us-ascii?Q?pbVa9wmGll9a7mzqSMn9STjsE/L+Idfi68LNNO1y0YA6sLKiozcmGUNkwvnv?= =?us-ascii?Q?FOdard11cHcNniteYdfvYq0Fr2RIaTg7Dp1j4IwKpCOs7iWyFpWOI6AfEHhR?= =?us-ascii?Q?v8atvPddk4O74QWlH+kPOaCehGack15dRWnC+MLP+jaapH+S1rtq6vKreBpZ?= =?us-ascii?Q?ou7OY/NoAGghIIsMI3G1khwrEOzTFiB9ojmdoJv7ifXJVCGmeLdrtCWm+9F1?= =?us-ascii?Q?805LY86RVQos8Hp6aBUQDFLKr3kwqql6FbRJ3VyskfLAxWGTyBTEfBbIUmKI?= =?us-ascii?Q?HsMX6NNaovp2aY5od44sR2v7/4mbEYoGBiOWrcDt0ms1BMOwNOX5IGpaGwd1?= =?us-ascii?Q?k4rSoLYJSgS8Zzu6zdvwtRA3eVGFUikNxVJmZVBVB4N8Un1xojd1A/Te0m3L?= =?us-ascii?Q?+8srB3c8Ik37Knc0xHxEHwy8CSLdjIuiTnvH0+uieQof9P2Fw1XCmgbWJjCl?= =?us-ascii?Q?hcZOTe0H74RrL+Jrxc49oYlQD2LOBBancX8Qx6525lAygOeYiSSzJ/LHPKfY?= =?us-ascii?Q?ix/QVMZdbWOT5PGUSXx8yDgPRh0/32022iKKzwasLNSe8nuyJM2q4TKbujBO?= =?us-ascii?Q?sqVbAUHi0QdHl66I974S/F4EGHD/X/64od1Q/SrwdRPvoyspLCUHruI0tKLg?= =?us-ascii?Q?93o1+qA3N20Sx3W2jVqHWTQm73F+QU5x4uUqQ0obdZBfo5DEy4qIUKQCEypE?= =?us-ascii?Q?hHusvPOYkXRpc+JDiEVY54dSqP5AbTdKFvPnZduM9djyX+54iVkt4Bvr7azz?= =?us-ascii?Q?NpkrrUh9PS3HDTQHW2Oc4dsWelSoYJVoO4yEa6NyqtTJuSh9b3IrQmly2IAx?= =?us-ascii?Q?PVlBk6/r32jOHB/19eLEZ7rMjQzpC3mlRaEPcIM4bZ7gQ0laWloOyRtsAVhI?= =?us-ascii?Q?SEUCAWtiRtedZyWoof9fR8+2JIX70DnsGVpugaAcclLAQKvi0K8UVFHxTssZ?= =?us-ascii?Q?x8wzimX5bbuylwBHkuzYXsaF?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30640879-0231-4da6-5501-08d90f104af6 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:30.2620 (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: IY8vmZ/wFS0R1c2WyRQz1Mk5elU8j4nYhuKQ1XGL7Kg+rRfwNg3zW6O0V/YI8Wdj2Yekx+VTRMf0sJ4TnZm0SGudeZt8PmSOSoms/TznvFk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.2.111; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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+importer=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 opencoding. 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 746ae85b89..418779a43b 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620142022; cv=pass; d=zohomail.com; s=zohoarc; b=kK7ct39LeiVSlHUo3SGrjyGiLKBsWDyOEYL6nNWjs5ACIIWEDC0/NCikdrJnFKfd3EzLA8YrGVw1JlsLZLWcndcuL9Yw/s+Urqbx3T1UC4EaZApWooxY4SuSvNyLjBZ34op+deME1z7jYuFTeIny0nnUIQSn+wCx7kNEuTHUR+Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620142022; 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=TPNwmU4cGPIBfHqHmUWd4hamlMdVtRoFn8ns1B3tP6A=; b=ch+3XcjygPigyTcykGGXkblw3lZs7BEt8ufWPesCFhabQodPsYcrac7cw08woBr3BTXiQxlM5J1jCGYFSTCJn9MXlz+wMpr07Cm0iHjlRz9QGZ8EHFV2bvvyQ2o8VgaudYFaa5Idp7wpFI42ZTM6OfaKDtt7hfV0Ksu8bvGtJow= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620142022517658.5156251716859; Tue, 4 May 2021 08:27:02 -0700 (PDT) Received: from localhost ([::1]:49534 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwwv-0000YY-86 for importer@patchew.org; Tue, 04 May 2021 11:27:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42738) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwro-0003hv-45; Tue, 04 May 2021 11:21:44 -0400 Received: from mail-eopbgr80102.outbound.protection.outlook.com ([40.107.8.102]:61999 helo=EUR04-VI1-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 1ldwrm-0006zb-4c; Tue, 04 May 2021 11:21:43 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:31 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:31 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P2YezPd39p4DtrAw3LLkDDHKCQUT/f4B9XkQHHS9PM2E0oaAWVlM86CfFOg+eNRPs3dIwNFWM6gg4jzSwY/TdO+vNxBxrbtoAs+GNS3q9tdRkmPcMB2c3sp3WA+3iLWNz6fFnSlNS4i+l6YIcP9wDE7CgUZIlx23ne+syHW06Wejy4U4hIY7FgFWq6N2pjKgewzUJeMhaBeCD47lXaXO66H4ylIHQOuFb1T53iFyVEmp2/qYHPxjpaJVbcfsj8lt3AB4gB01NIPc+ob3R/hdWdfdsqNyaec+PKP3hfvHjdMoofYD34E0XX+jVYPr6nnThGRwOY++aSRQZDewd9niuA== 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=TPNwmU4cGPIBfHqHmUWd4hamlMdVtRoFn8ns1B3tP6A=; b=cZ1+7r7x2OiogRljYR4l7wowE5z1BOQLUlA0GFOGrlKPobIMpm/r2qN+84fNUWRcU9duvdhZa36f0lsI7W3xG+j0qsHU2uezZbm51ond1Ahbism0XEeppANMCu6nQtmIg6z/XK7OKuOEs+i/qTEzunCYzwpYNDuF0LLidELTFXf+NouwkK+Pb70ON+Ji7+Dj4hWgOyHCGWeri2R7N8MsUoRbFLapGQJzay0jagzPOMPQia8SkGWJ1wVFjTm0FNdEjg8L5Ot5SJCCOvdRhMZNS/n61HDSYQtbtTk6emXcOTyUc/0YVO8Nco7BxXk8tBhZReW8kncqTBTvFOgBqkZYyQ== 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=TPNwmU4cGPIBfHqHmUWd4hamlMdVtRoFn8ns1B3tP6A=; b=N2ns5TQCqPqmf30wqRs9/H1ofzpOCoYxjpEpw+ocRcffp1akR37EwRLZNA5j0nvkW4izGrj93BkqgOt90vl7b/4nQk26e0QReIxD0ZrPomKtQqPiBlozm8u4cEiJtWederxWD6YjSB+KZbuPSdlWhvzwuVQQntqLHHDTAnwLfqE= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 04/10] qcow2-refcount: introduce fix_l2_entry_by_zero() Date: Tue, 4 May 2021 18:20:17 +0300 Message-Id: <20210504152023.322862-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: c4499860-8dde-462a-643d-08d90f104b89 X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: 2lxnuJqiCMql2TpIddIXfW8qybWPuwEnQ0eBcZA6+xF1uZGocVIJMwXowsEnIVY7ZQAA2ud/oTOQCYbdNwl5RUQHBEf4OKT1ghTqkGzyCjKuetHRoFe/xmCmlYsYr/PtM15lM7eqmGDhXtSt8xtSG1ucLCuYrixlMhbF/mmO4jFUSsoTzGkyPOjUYBDcEl8J4LqIpNKxHiP3Z3b2KLDmbcoNWuV4s5gbQ0SojeuE84q29Vzr5+q43ginV6fAWOBQ+smbBZcO84YwW90mYuuwW2cTjQjSgvJqMrgEV83Mqp+HnkR5dXt3M3oepzdKpoiv7+/fiaHiSzAOzd43y0z6V3nh9X2M9VGi7ftE5M+4RB/+u2vz/XRsmS4xHTAmWMrQp82GlXl5oIUAuP4CcIld8WtS2FbPtr3H/WZof+wpishHO8sSWOtkKhFh++5otYAaGbQrw/iZUya1Vfcm2sKvxQGoTLdqsT7OWNJzoB41OjNBmDa+pKwcNhN7dhDWRlRIFrarEZlh/v3RD4h154yEWAewEMWKfzjU0xKkhWR3s662LMDchxB+DO0AFbo+Eoys2ZmZgVoaYep8sO9zjX3wZk3WJiDYT8bWdJNRQ+OU82kO9nSAYOtdf5NZPaCEQcbpvrLIcrmfUiKq8Q0epkM/eawefX1NQjCcHhpLLtPr1KBHP56i35y/MDZD6k1rDAGP 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?OUG0n8XLL1uOqpfRHcEDOkMN8+E5X9P7cgwxAZe/Ut4tWEBaAJMqyVgnG3yX?= =?us-ascii?Q?v4Ia3EUAEf0N7xa5xu2KVZCfTMs4+BE97GMRpBOa3z4SZqeen5zvOpfLYqln?= =?us-ascii?Q?HNp+mYSnzJcB26ag4TyHVwSDaHEL8cEBOn6/0y9p8DapDuEulR6WKNXAytbU?= =?us-ascii?Q?l899hRDvLfelK07AjrUAFQskMHZtNq7ilCrs9hUHv5yAuqsjNgMdkN7Dt0Ze?= =?us-ascii?Q?39PsDzH2+J90lVPEgHWADfzDXL5T2l9nrsuUIF7l/IeBseZz0XwoIxxsf+jo?= =?us-ascii?Q?dB5S8SV1lXyaNIywHkaiimIb/jz1S3vpJuOpkWtCldZWQslm3gkhJQf+gpEW?= =?us-ascii?Q?LAycKlm7Yl3kGQxV0aJN1zgsohJpHqy51+JuOgpHHC091Bf5KdcOlp4D+BnP?= =?us-ascii?Q?nCkpSGTPDam9bm+fdRS7FA/7903NP986aqgcG315PSu/9c3yYx+W6LQWGAb3?= =?us-ascii?Q?EqgLsikdQNNtHw76FqHXPA91iFtyldszclBQAneYLrDyz35Osx4JIm2HzNP2?= =?us-ascii?Q?/5CtVAnaXH5xGeV2muzZAo5168lNVBiTIh/pjun53pjVJ1FjrSxYrzFePgkF?= =?us-ascii?Q?FzYAEZ50gxNKNQ/HNtOhu6s7K5TNFuqlj9mw968fuWSqPf+lJCeE31BSk5Dl?= =?us-ascii?Q?v/GPRSUVuW8RiIC4sDMdADGpZGDjEOvXEXJtZfc6Fjry5OugKQZvpQy2ARb9?= =?us-ascii?Q?LQQlN445atLfsSv4bccI2HQR0xW//4SJ3/A8csMz7t7BugntjI35I/KumT4M?= =?us-ascii?Q?V68WzTLCDFzYjVydAJXfYrc9GC1jL0eC2ztQ2YxnvKYS8LNKRbGCpxuTNZ1H?= =?us-ascii?Q?Mf0ewpsqjuPVxpdItZlhHwz5umEra/UpFQHNAUp7wsSLybqSOiu6t0cogM++?= =?us-ascii?Q?IRjRrCiaJlOOyn8JmZt7kcXP1+ITFd8zLqFEhTp3+0MRZ6YCXTLtSbcNa1+6?= =?us-ascii?Q?7Up8Preem5hHfnP6cXuwBZCmeqiHPaF4oTDMeeW5jy5IfxWisDhEJbKOLWTY?= =?us-ascii?Q?I74FwYyTCNRgiPIES0/WVX80wnUVhm/o5zPre/Tqx7R0phHmQxtd+ZrD95Lg?= =?us-ascii?Q?D5DgKhfN9ahXrw75HaG0WPuZVRYubKNTrlGSoj3HaDz/jCYzNB7Dydariu97?= =?us-ascii?Q?D18BTa1JLHJzOZpVk2uCoSBIc1GSPiqr+ZDGhpC58SgqrrfsqcuJ1dmJHkDq?= =?us-ascii?Q?QUpPRuVTexMAM2rA3RwbUmiNQUfyH9yzcKRKM+J8jsXUSHa1jdr3vCf2q9gL?= =?us-ascii?Q?T6w3qW4ARFkA8Mks/PkwUwOLpU7UoYof4VpmVlSQy5bMYlZBFwcWlH+PuaWw?= =?us-ascii?Q?idsOznqI82RT8lLafpPyc/EH?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4499860-8dde-462a-643d-08d90f104b89 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:31.2088 (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: coDJ8PpcJRXQTkeVwU/4UqdECTIFQr/f25IZlN325Zm6qaTfnVD/EgDEIx/9VsLbl5BIiqng9T8cIp1+Sxd6RWISuNWTaz1kSTE2zSohGyA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-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+importer=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..f1e771d742 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. + * + * Function do res->corruptions-- on success, so caller is responsible to = do + * corresponding 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620141817; cv=pass; d=zohomail.com; s=zohoarc; b=LF3dnZPqckMF8SQVw0rfyTxW5J5yLDqYbglVxTzR2yTIYcuYkI5rfUru0U9KZ4Xc3t5CLBqG2OEwla6KRBYjSd++wClvL7wcZIh5+Yx5XN1kdz95830SVeLEfNv+kcDZBrouB9PHyK4HuW1FtcN7QtEJiqqv0/yAUS8bsTUCc0w= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620141817; 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=NojLf3STacdOoUxQZhrqKuz++a+QRMfE6jol+jKzf0Y=; b=mjjrqI6TungyVlttNzphg/LGEOij15Cvso0G9VYVvlRstTHkXuqXLVEHSkAAXs5SKzSzdkAFUW9bmtGSuCbAxtl39kChEwkNVT3t5IS4S3FarzfxSk6H5VxjSIiBITX7TgGGzqz8Ya1OMK/dOBDXLyri0XjI7IDrKt9nvwOfVCQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620141817266437.83440862079476; Tue, 4 May 2021 08:23:37 -0700 (PDT) Received: from localhost ([::1]:41562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwtc-0005kj-2q for importer@patchew.org; Tue, 04 May 2021 11:23:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42764) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwrs-0003nJ-9q; Tue, 04 May 2021 11:21:48 -0400 Received: from mail-eopbgr20111.outbound.protection.outlook.com ([40.107.2.111]:7358 helo=EUR02-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 1ldwro-000711-Dr; Tue, 04 May 2021 11:21:45 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:33 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:32 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pcr8zhTKaCPKemJd9ToQtXJquUzQLhhq91izcfRtO4nMvZHsrr184tlm3hHhOnam/MAO6HlJOV1y5cQUt9a4GYMJs5r9HICyMuC+hRwiyqgqBwcUcrs6dC7ASoiU3bt6mJgBzSbN//oI9DPhouXVsNU+i92biFJFUwU9CAnDP5eprSNmfqOfjboMeROQ45QejmjJZDgQa7hWdraDxFX+XrvQdeaeaQIYYI0hehfZTW49IfH8lSQL8/c8K2WlYvtqtKwRDzTpXwSAjKXG/yRuPBs7Z42fQVbnDulCJjWzBIqo+s3jkxd8WNbRnhADYMqJvj0JMPO/1sE6xB1nH8IHdA== 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=NojLf3STacdOoUxQZhrqKuz++a+QRMfE6jol+jKzf0Y=; b=PAvIDQALaE1ixRr8gsD+EAzARfYVTbqBkSU2dTbfLEqJ8MSEflxkV3+3f1v9/uBzXPDy/C3dIka1JLP1yelP7Hf4v9gEbEbtnBuKdHIt8MRmZLBefHRthobk/4zIkOvZ19ILqeTa5B2XjEZCCsuB+IH3up14ynV7ooFQFBhfg9TCQx0gszXDs6vT+BAO1N1FD/pMHQM4P/qqjzUU92UhTqmtHFlFsQbb8liE8Rxrb2MSYnJo4oejwAJ5YX0wzF2ofjhqIwRmQTZJAa1DzlSyM7XCZZFgKHEt7+spppIp8OAxxm6VXHc+GQkmmT/l/VrNfFYifU3Be55pbFiUlOTEPg== 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=NojLf3STacdOoUxQZhrqKuz++a+QRMfE6jol+jKzf0Y=; b=EaKpynclIWCqK42Lu1Jp159EnIQj0I6dgdVg9hsocKqV+rw0P7DJ1Evl61RDy0IVuLu7zNIeYyLFj2/w3+GQi8ii90mXJcNEXYHd35Q9Jj3oEFCUP9arKHgwZIUzhDt5orb0qjyQe91NQBZ5xb2hI/anh0Ro59Eb9RM9h6odfGA= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 05/10] qcow2-refcount: fix_l2_entry_by_zero(): also zero L2 entry bitmap Date: Tue, 4 May 2021 18:20:18 +0300 Message-Id: <20210504152023.322862-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: db737def-311f-4482-8a23-08d90f104c1b X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: owdZraH9eRvLvyK33KRIcrAY/jnf69ciLp3a+GBvkFMdFTRicoGw1aNJWW9b2Q+IAXJa2by82mSjoGsA3xV9Txy1O7eHdLuHIuUvvmBvyggAPZ2x9xAS8suwDrZ6oMnedmiBAtSpi1Drj9MTF883TZPJfHf7/cclcyxCOnwcAurM5RYiv24zV/YaWBVEgGu9jJHT60ucOM8R701Z7rokI2yqaOEL2S38OrfuNWUahkalItbGQZC2hLDaEA0jK9lv/3/gyUxMOx+fUC1tKu7i7kpP2dC6i/lu+Z9Sg1SHWdPS1Recmy0+hCd2xcARPWnkjIhhDzUei62seOuTN4Ol1mE7BWYd45btLuZNBwjwSlMi5Qn0LvzGxNs3nKDNZK1t9QVd3zYpy6p9XWpz1GDvaRPjnWyyDSQrGix9PrTx+GZYPT9MDCQ2ATnJ/SVOtitA4/ZCk5Nun3TKcy56f4MS2BswaWJVLaHnWLzIFvMrYBGfqIWu7/oGjKQ+Iu4TFTw8iN/W6yIiuDw4tV8my1ReL6ulKTtOebYOc8NJkhJWMWGLCwG8gXWaO1WkYs4DyOANLXDcXJRRrBJf3GuTnOlUyFAqpJ18WfWXTdWrMKcsLyw3sZgMqkv61sttB90vROk4eS0J5X+rEJcVIEnYBrzKxnA3qxuEQDAB6bLnMKl1LMC4Uu2w35jIYe/qCwKnzxZF 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?H8DFmfHOX/5GqzwX2nGPOH2yu+jJSExU9UCWnknAINcAr5FsbxYTlROAnyzq?= =?us-ascii?Q?zLxJFGNL7JCMaei/yxbUYbfS3pZO8xcUtZe6RuagTvvkifBVCHN05fnwrpN0?= =?us-ascii?Q?TNRLQYA0P5OTvuecJG548Gs69DAxhWuqQjjhYG5oWITHm+00Rn6PkZBttkdk?= =?us-ascii?Q?A92erKs0+CNGF8twE58ypoAenkQT7llBArxjWTC+YVfuoBKJ70K4xl+xqgrX?= =?us-ascii?Q?YxlZz4aItONZngrEcH5P/gOEzRtZcgA7nXKiCIWaq61+pENOqgdiQSBZCIU5?= =?us-ascii?Q?2A/DSkp18r8rxTP2dO1OoSXLDm1bPlNfUXTgn4LjOkJVpmdLYNIS8kNj08Db?= =?us-ascii?Q?qSZ9pJkjH/kromnAMkLM3138nt+PvleN2/3yanKMk6E4YcxW3fJXPB+Zu8pj?= =?us-ascii?Q?buxSsQSj4wI4JYcD3SXjlifkEtZNeU4uHS8uNlZ1PO6O5CJABX5lN+dYSlVA?= =?us-ascii?Q?GL6y+tb7eC3XI+fe4XQx/b2W5cXkhlAkL9Kp9KVWIqPfewe3KSaH69bQ83SB?= =?us-ascii?Q?HpEJRGYFSP7hkmjaQDoARWOixB8nNH6i6kIvjCWo8/u3lQKafL2EE5/j6EoC?= =?us-ascii?Q?QaflKt6VYYnpjHtJufYvrqpnVJ/kIoUJflLhr9+fjpN1daf79X3oS57H2iiu?= =?us-ascii?Q?Fv7Xi3Ekl8g93zpOmLQC2CL407aLLVfnv7nDhZLrgjwaJI+ZKoDVC1fvV8uL?= =?us-ascii?Q?3twxj3jTxobGngpJhqBE675rfsQsv2HVaajEb0EOyEjwITOQoefPV0+fA/Qq?= =?us-ascii?Q?y2fDk48gF1CR7ygJUftYF+UB2gdfv7FqSbgg6+4rY3ojNPriyEwPsdR7WQWM?= =?us-ascii?Q?zt6CNLRlukszebcQPrvDLrikB2z5dIm4dcJN0vPi/otrk/f8DcwmdrGTyZqG?= =?us-ascii?Q?5Mrowmk6I4kzmz3M95e8SVCT+iq2J9Q2TJRbiNnow2KQX6WLlKam/5BuC8g2?= =?us-ascii?Q?CjwsGXQbFaqI57nyg5q7VT6v0mJnuqeC5I3UP1ov+tMznMYC9IEhwCn9SPfE?= =?us-ascii?Q?gd7YW4EacOFP0EA932sFOv5R4VY8rGr0JiJ7bRrr9LD+Zf2WI/kUogrm6zMe?= =?us-ascii?Q?3b6/u3jIr4GOIZrFLA9Dra+ol63x/ddQklfNRjSpGzQ+BYdtj+SmqKT7ihtX?= =?us-ascii?Q?V80grACftYsoiscMHKzHOSsEinaIRmVjX1tgpc8FwQuh3eq4b5LnCzxKe7iF?= =?us-ascii?Q?TK/9e8IKqHAsgPdY5debFH+G+AuYGqJxjEe0c3jLG55HQ29sMW9xPCzCU/ac?= =?us-ascii?Q?oTzRtEnQZp/+m1dFPnRJTf4oVOyWWmXAb9bVtm4+lUNbtteqgR2nwoNjS2cF?= =?us-ascii?Q?pk2c/ZUq+H6B0pZ7Tu4h3WTo?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: db737def-311f-4482-8a23-08d90f104c1b X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:32.1866 (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: F5sZhdu21LFe1GdFRNYsaDRX0hnEeOVA5TMmE5kRuixU9o4Mo8GVFnyUYgZGPaLwu63OZHdSu6gpSxQ9DLV1mnqbI93aWzMaDaLg1gIihEg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.2.111; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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+importer=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 f1e771d742..62d59eb2e9 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 maing all its pr= esent + * subclusters QCOW2_SUBCLUSTER_ZERO_PLAIN). * * Function do res->corruptions-- on success, so caller is responsible to = do * corresponding 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 becomes 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620142142; cv=pass; d=zohomail.com; s=zohoarc; b=ipNh6LTNfgSncOy8dg+mLdmNAwaFJF89SkMsyor7z1vUFUT1+S6H35QttfroMMcg/586zZQbsDaIVaJ5jIhcqlGuIxC24X+HQoYvyzfkAULtC4XyUhLhkiAnm8fUw+CuOWIeKYb3b2K5CqyUqjoA4ThmqIOGobIgugREy/mwoT0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620142142; 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=kMUamk2OvG16T34m1QTy9vV+ox2rLx83n5FJOG/3auk=; b=liUr/31JLgX43NXlGv6bgMgQqWwseLOhPgo7uGAd5nFY0KZfPok43FNp4tRExRODs9AlmKMtpSuQJrHNpHe1dPbcctDRbiijWDD06PSAbZlw6WzDJ01DdZNX5lgSTjIfdOF1bkvrTny2Bp2kGGnZWuuB9T6qHV7cY4DgD+uSG5c= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620142142147451.16582780763986; Tue, 4 May 2021 08:29:02 -0700 (PDT) Received: from localhost ([::1]:55108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwyq-00030s-Gm for importer@patchew.org; Tue, 04 May 2021 11:29:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42792) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwrt-0003sk-9t; Tue, 04 May 2021 11:21:49 -0400 Received: from mail-eopbgr80102.outbound.protection.outlook.com ([40.107.8.102]:61999 helo=EUR04-VI1-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 1ldwrq-0006zb-Ea; Tue, 04 May 2021 11:21:48 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:33 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:33 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QywL9IKS/i6MIaE6YhD2ctJ0tW2Yj66Ag8rxL4CK/n7c9j5vS7VodKBfbNDnl/k/+xBiO/BVlXDHiex2xBjkmItpfYDsQXoiDTFpb6MZZMD7YnvUQIArTDPuk8GYV5mxsYXHsBnTM575wSlS4WJbR7SL6iS6eOVdCWmXgnogBnftmMN+bfnPW5b2PHtFX6T2BPRDkyNcRnGAy1HdURJvtSwTb5pKSDOtT9ljFeRdz20lvD28A8HeXGbqSwSNN1bpdf8SEC9PmGZ3uLJrTg0vdYdfUBkhlikmW4UmvUpHVt8P9WrUO1KEtKK6/d9rI0I/1kkLTgyXQxxgPI7Jwpysug== 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=kMUamk2OvG16T34m1QTy9vV+ox2rLx83n5FJOG/3auk=; b=ROTz+dVkR4MuRl9UasOPYXV0Fhsuo/3F7jroQQ2CwMbAXxcJO0jMjsVi+QhRHmJtf7ari3WpQ57ScleuGLl5ERpmdWVEnga1gGJb1UJQTypHlupIR9q+CldtSjb1h5dY0RnsFPZcynRJcGHBPMdI3FWkBUSUDk7DTtHarKRewZzxOH0+GyOu/kNQ3l+o6AJKP7GgRVQeygVzFCDynzSqMTzk4YQJCRHYhJGSr8D6oNyW8tcAVBi8PBVlXrbuTYq+2Gs2CNWkeu0XB9smFQhIhmh2dsrYCkjmsU0uRSzWg4tk9hLncPjxxl5/kXHA9MAnTQG5ajy7dtu3bB7T8YDfpw== 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=kMUamk2OvG16T34m1QTy9vV+ox2rLx83n5FJOG/3auk=; b=kqbG5dQa4bYGnW/z7f08UaC7/ibERwRVUOyxpBoix41ZOyxKRHNujUxdoEvx7CaoS7WyHXuLT1hTIj8TAh5gjBGzfbHkbuk/omanWjnfYh0biKuZ1UWES1cWfea2cB7vZCFzae4cZ9coyGU4dTs+J22npv3Nyh7T1wcSedIMOIc= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 06/10] qcow2-refcount: check_refcounts_l2(): check l2_bitmap Date: Tue, 4 May 2021 18:20:19 +0300 Message-Id: <20210504152023.322862-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: 6e4b4d36-a936-4c2b-82b9-08d90f104caf X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: iJZQyrWl6/Y2oPvYuJ+X4EoMSnhcDLbP4rQSsqDpXn0frpcHV0x1WFs8NmTQrmxEAXE2yj7nuMwDmXD5IvsiVq8Ey/F/sOETLqg283E9kgYPCZ6t+O5z3+1yrxu84lRyYD5UrxptL+WKMoeKzqZ0Okubu3FsS7PRh8dWz3hR9BuuUHiXczKSuNBzh+FrmJAs6qakTSTZ6O54KEH+H1fcBawtYcVNNPvjzjKIspYQSyLmHpZy08yY1CQOq1GGqH7Dhi8vZvu8v7e8S3FS/GnpwJoDLy3DVnIpa3xLqqVIKzf8NhrGRZ/gX8+hj6VlKqlx2ncVX0rnn3teNqPWqKDZlMzS0N73Ahv6lQoxl5ZT9WqqZvr8blTRD1Nkq2uPLMVhSUrz5LLtEa2NT9UC8iTw6f0R5QCx6D6ziV4Sed0YYlZPg0LXdaXYWbuMxGg6Hg93VYh2Ckmk2rz9xDF3cppfpPO9ta/yTp6MGZiJcRUeOX9OjIRW7qnw5o1v91U10SaHXyVOFuZmZbsiSdErRqkpdSueJ8akzIgkrhBtlUN5V/EkP4d0eFDPlN6iJ6YE9pPaIJbjgrv0SiiMCZLdVFAdOnoqGJ6jtjRpa+nxdMOskao5pT7b3c5hTLPP1AaSYh0Hs8e+EZFvSV2p0VGtpGVgzwoTTHrm4fSVYlHEV392YfMnYpkQ9mF+dO/tEOCUfd6F 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?fCGuw3erGU2/yUvtKKttHl2k5B9qED2pADWpEOSd1dHu2qRhIIPgPzkgi4qg?= =?us-ascii?Q?ak7G6OGmnJKBMIAyhyl4MdpnuuULGv9GjdGNdyKWPQ06tg/asLxVSiWy+kKe?= =?us-ascii?Q?eV1Y8mijMVvKaShQNdk8VrgMLSWu3LJQdMPsVai/iyGaxmrui6WEDeB2A8Zk?= =?us-ascii?Q?EL2bsGJbEOsKo3aC+uMJ19MZ7KJB1yHWTvB0p/5yx7SfJee6O5rNpG/gxZfD?= =?us-ascii?Q?oGPnU0UDy9UJIRyMgyMm7fqBKNzRmvDHMrDgmP+eFkHI5/ZQO3egyLmzqHHK?= =?us-ascii?Q?sWYyzWsop3LzMAKjqePlCkhIVrQTXg2mHvRQT2lcaIoD6LO2DVZLpO0syejU?= =?us-ascii?Q?Of6xY+Dzwe8ZQxngXzLCNwotnuZsO9KZzYRJBNZ0vxgygbbfKpYo2MeTmyfB?= =?us-ascii?Q?OCI5CYJoe5ref0+9d4S2IymE32rB8t3eUi9AMurwV+qO9SRQ3FjLHN3tOBA6?= =?us-ascii?Q?OMljP+gInaN4RdU+uAn2dK8NiJ+nCAiMgk+X12tldDulEBQCP31075oIwGKM?= =?us-ascii?Q?gTVA0KNy2TtS/E3kPU+nPQSgNmXPmCrX2Hk3wOGNG5KNUv25zfLdy+PKr6/Q?= =?us-ascii?Q?QyPpMvzQ5XEfmmolmGJR/vWBNLURiPDlr5VC5a4tJCuLpzwxuyGgEz1rypPe?= =?us-ascii?Q?tX23JdhI0tfDxIlCqUwlmF8lyb1RXrlUoISf7a2dEUqXiaHhCOuRkI4IgTnS?= =?us-ascii?Q?7ehf/qWq7K5Xe+e2ZWgSY9AfTVsbndG9bPRm0EQF+UN+Ar+eBsFLj5P7UwuF?= =?us-ascii?Q?xDALLMHqB96WU6IgCktBwW6IAg0IXeS/Otf44LwuCfb/yAp4ol78ob6F1yb4?= =?us-ascii?Q?z+7ismbZIhPdflN6g0x4ME9h4ky8jnhIpCkInGiU1Tg+kEYfQfoqqbjKrXOc?= =?us-ascii?Q?j3nzadx2GDgd+OqfAbvYa5U3Mriettg6CfKs00n2N9GVdXXPfm9kda/4AocG?= =?us-ascii?Q?cf3AzP817togJh1Epq2OhRKhzb++wBTrqcukGXAuU0EhdPe0unfVDNmGSDnu?= =?us-ascii?Q?FTFIh+fzTQbgGdY3vJPzKtLj1Bi4H0L9UJpM8B6aG6WWibt+gKjZdoy9HOrv?= =?us-ascii?Q?bRzf4GuVsOi5qLFiSctlsz4Tct7XWnxKQoxVFx6LS6b4FtBriIABqjxx6rdO?= =?us-ascii?Q?QWbgy+tbShGmedTNHPoOEUY/Bt5oap5eQ7QTN0xkaNsi25klMIDI4z9nJ7TE?= =?us-ascii?Q?O41I8076AUc0+JjtvmR69dxxIXhsceKlHIdZ93B1EFhwR/bEcv2V+pLypkUW?= =?us-ascii?Q?erGY3L+ORPHFMjHmubi3+hb/A4hsHqABlUoCe8/unzkw3EsBiS5CelIaRJyc?= =?us-ascii?Q?69VPu5pPilqXSTXqHkeET58X?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e4b4d36-a936-4c2b-82b9-08d90f104caf X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:33.1792 (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: 7Gx5JN6EExm2rATf+HpwwU4JdNMSFmiNIFXVCsgfRJQT+q6lfKLtaebqbl9LeEQzD9L+pGOrWpv9P+qOCBwcz/62yeiTkN3lrVAYjBvBUhA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-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+importer=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 --- 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 62d59eb2e9..dc940f3003 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620142033; cv=pass; d=zohomail.com; s=zohoarc; b=gqk1pEsQpT8zDTgR2BmfU4F9iiHTuJzt+T7TrBoMgchOXQFTbypYcByuFMTxxPeH6G1HD+BiQBdozz5Q+vVfzA4/1u0WvNADbM5x2l/vo64BGPQbbc/ePpSzxgpTbVTdat/DHV8nt7JJoX8xyGk2AJZxJUHPnwDtT4XRmN/HD7E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620142033; 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=tZYfdDJ6Nzcu6FvmmPg6qo+P7zjy1gZUeqLCRuFK9Ks=; b=IZ5igLB872v1UVT45QCyeoI+LmszRQZHLsKMfzSBHcHw7Szral/nOgLNSu7nQlo8IV3fOEUVPnaZAUqgHWlQSSbUo+7MUJGsbeIT52uTEaeZw6H/8Y38h70CDOK8vl6uhW8DK7l5f7fYpsROkqMJSJnLizKlCkNJagsy6x9uoUA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 162014203320084.23934457796076; Tue, 4 May 2021 08:27:13 -0700 (PDT) Received: from localhost ([::1]:50430 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwx6-00010v-7y for importer@patchew.org; Tue, 04 May 2021 11:27:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42810) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwru-0003wq-Pr; Tue, 04 May 2021 11:21:50 -0400 Received: from mail-eopbgr20111.outbound.protection.outlook.com ([40.107.2.111]:7358 helo=EUR02-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 1ldwrs-000711-Cl; Tue, 04 May 2021 11:21:50 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:34 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:34 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c+DuPsMHlMAm5zXTikM+nJyyYL/kJ4KmqfvZkkL8eBaxc6JOk2Zf8I/sjLrSni2BZhvir4mfIhzjVSK5r8NH778UOtc0Pzl6+zsgNwYZIRcdwF+RhIFk0byoQe1OSVIn1ok+wn1gXQreBLMbNgnmTzRjHQOZtdNqq9kKo1CrBln3nTaVwmgJOYeHC+WxEfyGteMK+/+irEqZ2rL4GH+rNJMzpunkoU7NpkRMzUEQZpNKANRhphglX7IT0x0aw5VLBy4RFW86gy3oGib6QBhixApV/a+Ihcowvrm3bHCqwtbhBif37QKA5QZYt/E6X/PKdfzNvQK2cZcc3UQXRw0pqA== 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=tZYfdDJ6Nzcu6FvmmPg6qo+P7zjy1gZUeqLCRuFK9Ks=; b=bQ61Zu22zkYRv7xjdsXmMvCy6AH7rM6tW6+HX83z0W4HHKcl2lRtYiTJhu1IigIlMAh+eIyuk43C7yybwDdfUJlcROOgjcnivb/bfGpwpoA2JJeTbGCtAf+r4/v36faWQgKKPCkCbBeO7vAHxQKuCm6BZEFSZvIO1EID438XcxipPcIjmB9se9EEKcgdej1ThTUVANIlhXD8PllDrRBUH488v/YMMU8djFRZ79svOr/kX//LWg+G8M0+fDJEd81idRDePjWNlBVMiU8c1E328nsed7tURAhh6nSW8LcTKFeZu2+Xy6XGpwONXyPnWYBaDz6rp4tlyTZULagIjpZ38A== 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=tZYfdDJ6Nzcu6FvmmPg6qo+P7zjy1gZUeqLCRuFK9Ks=; b=T4YM1pxKY07zsFpe+IoemGzK7joUD65kPanWCpsuzja+TuccWj4QEZLlIAbsOQcvua3+je42eyl+FqTwAtqUNENo8bH+8jwO0vU18me7A6pqZIMU0fsmKhPXKOFOdJylcRr9L/rQ0cQZiZJwQ8V0se/odd5sQPmUbwlNoj8QzJA= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 07/10] qcow2-refcount: check_refcounts_l2(): check reserved bits Date: Tue, 4 May 2021 18:20:20 +0300 Message-Id: <20210504152023.322862-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: f6e87d3a-bb05-4b63-57e2-08d90f104d48 X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: FsZKa8YPrcDEiHWX6AfcjYuAAp2nqJisAMpgbayQ9s8LV8nS2mc6k010j1pGvPC2OehAfK2WKhmpdLkoSDZ6dC+bsDte/BRHzx8vKp0UZxipoMbu7tFMz2klgEJLzUH6ae4GzuIGTKQfPewpDmzsVpd4Y7DHcI7zWJ9q5vFda+czCRoUu7S+Q0CxPsD8OBtFLQswtXmCP9l7pZS18QzDvJd2uIurCun7lZJtAdq0/PG5Uw7EWBRIN3nKP+P9kBtj9xK5zjp6f8qsyx7PNoDGtCDuxTCAV/oCUbxtnQ+BaVQVlXNenG61WjqbrXHIoVNBuuFe0Ss/WWzIqLtDPZkngpo8xX63BBRC3P4qnZ11TJTN+l5k6nyaFlUQ+EG/LgN/Aa9HcwmSUIC9HidDiD5GAeZ7nQDmmT/JhVUnZ0XT/pFs1BmlIXaJzZfRrRdfpwoZXZxAbDCK2Oh8jRKwfrkZIoGX/HitULysBMhKEry8ViwjdYaFd+dQOreOb3LtT4MiVs0am43AUMDAV4NgwLC6Zn5EQlbcIgTM73/fI0fEP64NfloEyR/+GHjppHHUCCYMDpqG+d5XLhz0PGbmILLyZkvMmrbGnsUBijVF/pdeBJQ8qlAejcHQUjPDTLms50seu21xoKm3YxwWw61+wSSD1nzqTojEaihBto2BmGWwhwP1AACD75oZUHW0sipZWaYJ 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(19627235002)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?Wg2Qn7HbKE8LlrMu4C1MuhrpSOogpNw1jspF5N1ko0Aql6NeJ4199uyHkYF3?= =?us-ascii?Q?GPJGOBP3jAeSeM5zOTF+m4EF/Orgad8oVoZGCLywwGfw9GtmOjJUEvXy455W?= =?us-ascii?Q?tkrPmPq05NpkjgtztdZ+2Ts6Ql9yuw9aH4gWiNknUMq0e1wR1a67KyLVGtk8?= =?us-ascii?Q?LQvOJcfxHlPqYgYlHqvIFwxCj415eqcb2vFqqMsmG9Zh+MBDWRjg3HxXiY0O?= =?us-ascii?Q?RORRUJ+qy2ahXNwWJv44eyNN5kZ86SZuWduyQSPTc1Uiv2WNqpcGzKnWBz5z?= =?us-ascii?Q?SR7gneyZo/Nnc+J66I4OB6upLFeiXmkRpg1thiKY/9v/vqGLiBvgJZlDAt16?= =?us-ascii?Q?Ck8j36Ve4g1hqXiQueSGpxmlqoyM2fvbZy8pbamK2sickycmYg6vHDlcTfMJ?= =?us-ascii?Q?KNjA7h1p4EuCR6JYuOzfLSy4Y756g3Kp96+tLstPZXC+cXmR9C79LdL+1+Ua?= =?us-ascii?Q?u4CTA81g2nJSp8/Zd0Lzhj+VwcpETt4j9D057lrWXRC29i5J3PaxDC9rJwwA?= =?us-ascii?Q?d9y4mjJ9SBiQT5xDfrgaqNdLNdDRBqeL3Kh/UlxZ27j/laLVWgcOXmYt7nnl?= =?us-ascii?Q?UOaZzAcFgvEVMDukxJYOuTSdp97GIZwmtiRDTYsDudlETTq9Dv3tz9K3N6/X?= =?us-ascii?Q?nRDSCZcYcnLGVCB0LUksOiaXF7cm+hfEExugdv6K77nIkh3pye3QM+Wo2ybM?= =?us-ascii?Q?4IEIjrgqut3uCleF4K0kplFSl+9+fGlK+YEzhunwYccdpvashvClqWA5ZwFk?= =?us-ascii?Q?gBvOw9DerwxmBoiUYyLWMZnGQfzavHqSfah3WDOoNViNU4FBb3n2fGORxKv4?= =?us-ascii?Q?vETn42Q9cLq3kJo0R9BDs0vzd1t1iI3YtZfNoQwlvdtZvsL9QZj9scxCxi0m?= =?us-ascii?Q?w4a1cpAHZmvkslB1g76Qc+3JexWCwHsS/wcPa3bI1SsV9epWD3ryGzbriVZh?= =?us-ascii?Q?QmdkZrxzxTOkTySpXwRu3eeq++ETQgmx2wtTMsfckrET33ew0V6IeTjLWYEW?= =?us-ascii?Q?MP2D829UtxNlNHccF6V+bdnX99Cojygo0kEVjxFLxCP3CA73R+s3KUuy30lw?= =?us-ascii?Q?EoixTH3uzm4bHXrlmPA6RbDTCSx/fugy8Txz7lZgcITPI/h9dJLTLumPAnT5?= =?us-ascii?Q?N0z79ZcwoWcCllUSZS01oaUUR9+GA/5CXkCTjQpbhTrkAb9Twwm810DBeAM/?= =?us-ascii?Q?V7jKKa3Eynbpze7yARv5J+T86HcE927wldXbqlbwyYGWB0WmVkLhtd0Fbd7A?= =?us-ascii?Q?soWr2Jb4Q/uszNaeb3sPcqRYeD4YiE/z0CJyIzWTtwFgukRPwd6SUOl5j3dA?= =?us-ascii?Q?uKjqiAXoEpBrNQ/qV7RPlHIS?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6e87d3a-bb05-4b63-57e2-08d90f104d48 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:34.3799 (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: kRmQg8qbXjaVSLus9PoMV7hjwo9iINH76mneF/3Mo1uMuYJuC8Fk7p8SAMrKf7qKwGsqYOswNSra3XZUuK1J6IRCtB/s6PQeHFDQpriRGrM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.2.111; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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+importer=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 --- 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 dc940f3003..44fc0dd5dc 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, 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620142180; cv=pass; d=zohomail.com; s=zohoarc; b=Pv83ya3QaYaN0QintXOvJ7Li9P0/MugZUgQzVknstRef9hH46rh7mAhb/HwmAQXH5gd3f9ylMifJkoTS/UzSfX6Zbmkb2gkCeRjIspDWIOB5ArZrnXWsxaRdB3bw9M3g6Z2tGY/2RNLRz34wP6VQ79gTsC1XzDV+iXkBc5JaSAo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620142180; 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=2H7wyfGI/yknLiVGgVhdJTWzj24jM5cCIioK5hYINBg=; b=IFnpshnd1CB1ONq0XiurYY3/+sycuUbEDzKLIZPbizBz3cYAOtTBikNFZzjTNJKdK83UAIhO7k5d/CRcxSKT9Ap1k5Cy2vlQveKCugfLSril8aVGrH9TTnk8I1VOAoJ27gre0Aokgv3yIKPJNP6gvoLxy/Ci9SnGlg/TXe+43Nk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620142180188338.7144343546206; Tue, 4 May 2021 08:29:40 -0700 (PDT) Received: from localhost ([::1]:56722 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwzS-0003gd-S0 for importer@patchew.org; Tue, 04 May 2021 11:29:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42828) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwrw-00040T-70; Tue, 04 May 2021 11:21:52 -0400 Received: from mail-eopbgr80102.outbound.protection.outlook.com ([40.107.8.102]:61999 helo=EUR04-VI1-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 1ldwru-0006zb-1v; Tue, 04 May 2021 11:21:51 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:35 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:35 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B3kRiFyhIyIfKDvmb0JTW4Lzc9CFOeDLkx75BFks4X78oY+lrDau4P9RG8n3800kESde7cQNTQY4oAFUbfQI0SsuHn+IaQER2Ntad7n/GsBTkyJMxs5FJzjWFvq/mCUVNmeMJqSVNrfSc1T1Hexgoz0JHbYyeSQk6Xr6/ftJIfs6uyptaExBo4s5/MkpYOtba9apP6E63+dM04SIyaXIzsUPHjO9kicOPj7niqMCxrBcgz/roaygalh+ivOKCRMpH8ptU2IWqK08c5MbheAB7WXgMPiazL0G+H7tr2jqUUq645RponGfOU5FXDvnmd50uFzDMiTanPz9Cw/AsEWzkQ== 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=2H7wyfGI/yknLiVGgVhdJTWzj24jM5cCIioK5hYINBg=; b=JCwybo52jk9IvWPWKK/bu3ly4xLs7V+s7esKKQtIX5RUnn45rm8Lu7Ko1OD6Rfn7WARThVeDB7VhUAn/3XjyWamfld9pjLn+hs7CzakZqdibWOSTe5/irgLBhTe23Isa2xRV8d2A1m5bWoyMQ6DimWnUPGr+nwojKmtpeHlfT+aKnp6Zxx4gnZW/cxOFa3EdH+vG2e8yO42OjqoXu3Mj3mqWyBFc4y5MhNCCcpWdWVLGyEwCGpeYPa03ai+YxS2rOPEUZUtcRr8ErSJ0hwX4YIpx8XvTBnqWHJWg7+dSqwASE0Sia7Lfr04PZTwUsYseZRPnXbEbXF2DdGbhUEarBw== 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=2H7wyfGI/yknLiVGgVhdJTWzj24jM5cCIioK5hYINBg=; b=ee0LDtdcRH95/iHW4/bkDszkK3uttqByXcnQ9JX7TNVkP74x6Vvok4IoTpW8byadw04TupskcaPH8gwuzVMq1e1khJU2HY4xSpH+9jpYgC3HPVJHV7uxEIgY+JbJHabrfGWkCL0xLJ/ashXaj4sJqEO4fanGeXooGFT/x8MfVFY= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 08/10] qcow2-refcount: improve style of check_refcounts_l1() Date: Tue, 4 May 2021 18:20:21 +0300 Message-Id: <20210504152023.322862-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: d906d65b-f032-4b48-8a4b-08d90f104e25 X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: N+pGhJngWD0xiOFJcmsg6qO03XZM+/OepQeudvMEGueaL1y1pjQHHbsmGeysXuN7ZTY3P3iHKHb9jiRd9H7gTE46Lu2yMHazRt5gY0vNzn9A4RU0+PXjuPDrok8kgL3ZR220/zDUCALnWCwav90rTwIsFsWoIgOc6hCmGcIlupyVZQPaOeJgfxDcjQw03j1Y9XO2eAPBLJosyJ0YZltQrdlSByYNJMv9kv6oeqIZSgmM8gqG7pcFD3L5lojmtn5m1WsZcF5WIp8CnOoWsEjpMPFJa+YZVlzPStvbJh0bLLNoTMOV/OqQBP7r950Fh/PLJYy8DNJMu0jRto5sxIJ4RTfaITEaZM7w48tBsG7DveD/7yTR4DncZNITxwJ6WkcPTnDjEcWMRrZEa78mYoL6W4OlxoMh9A05DRJHzCEYD8qL/bdaG1zMuyOiJtOMBinEbiYCM90vPPUsVnN3eCQlqnER8M0+bWWOF5vx0KddAIDVYiythvazJUWh+PAGYO4wbMKxkYiouxwS+duMx5PAzr8M1da8vyulm1mjgkE/9idCuGFxDh28u5GLW2nPDwcSsAfp8svGlyet3cP9x6o95AuUiCKFNVXoxYFkJXJzrnu4g6qaQOXiwdizrBUS1rJ9CpoY8WYnTMyRL0SdJ/OEK8mcGOhJl6j8D8Ciq1iuUULFaUlHzT4T0jxl2hyf46BJ 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?4JeWhAtovyEVU9XoqYXINfCQ9gHIsbsgNyu9d6k3Nn6vHDhNip/7vJH9ml7f?= =?us-ascii?Q?rRLTPWf1iyUfz/+pOyaM0iDmcy7L7SSICKCy96HXGWyoC6onpI6DhNsBm8zf?= =?us-ascii?Q?JWoDC6lEPTwYsSe4xUsZpHZg7127aHlVyPSg2Zpb+TK2S0dJFLEdla7W7S3w?= =?us-ascii?Q?YRllLXqZ7hS6ky8ZDTNq/oKsa71/sfwRtzreAI6Nq4rJ7UybpTHJs8kB+PKr?= =?us-ascii?Q?6lHvFOPGioWDCv4pWmctwVhmue8h1K4KPHQ2XGcXY2Cf+ddhxZDNdzu5TO/b?= =?us-ascii?Q?elwk2C14BS1wbba5gV3ZKl5maIPqbs0PeY1Tn2zugknpqSJdL6s8NF97v2LX?= =?us-ascii?Q?jn5NUqelKBYGkDLtpSDAdX6VWhejTreJF8u+uf5EesE/qpAF37kIzvRGaKkp?= =?us-ascii?Q?NoDy0cufpCkX1hq3vRtdaJkm0IpSacDTqYAYhRxfcCH9uC9cL9ZjJxj1Ziad?= =?us-ascii?Q?Qa6bwsc3ovgnk9dfP+MCCMNf1FWD7W/4wP9dd28HgG3boWAiDiGsAQhlHZVk?= =?us-ascii?Q?g2O8RiOdSXJaWQnWOlx2Rzn++q30ZtAqnsbHPWNKaJhiRXQdmCK9OK0Fc8wF?= =?us-ascii?Q?hTs6f4dI6KlTeFRiaHSfBhyXxaAlgKkmFEWYXge3ckZB8OhZacufGEILc0CR?= =?us-ascii?Q?HAcDl8RZ7hscbB5VPDhS+LSxAFXjmgKuryXMWVuY57GyyH/Ej4aneBXZev/P?= =?us-ascii?Q?2m//XjAKqA1drKqkZs8y9qPYsViHnZw6VuXdiK9IA1etK+tU8URzYAaYbwY+?= =?us-ascii?Q?fRCiwJqL2g0BJlpPWdnWrq6Gu1mcdGTOc8ebvk24DvXPUsaLkdonlgcdLI4M?= =?us-ascii?Q?liqPtfKTYQ9Z4DzuNPLU29xmXf4SmxKPVGwnnidKQFvhgbL2sN2+IqDIeU33?= =?us-ascii?Q?o97P9q15xCmNhELF6qM2Az8HgoAKCJEMPN1Eq0zRJo/ATJIdb50UsDag3y3X?= =?us-ascii?Q?pgzC9WlJcuNNHRP2IN2+QcZtvo0IcNJZJRIz++flieEInyQwSD2GuREOA6Lu?= =?us-ascii?Q?9r4VGVyu10cB1vqlPKXTJiM8FJ5gYwEKJ42+Ars2E8uaV8QbQc0rxAG0T47k?= =?us-ascii?Q?yfJmtRJvVprtBRAtBmbbC3o8s/cfB8olllzXmMOtzJiQFibJNLQMlNIIqlPj?= =?us-ascii?Q?nfjZoWHhybzCibcj2OEfkBGkcKzFwmtfXFvlNoJbo5fsPfXVNygP8l2kc0Cg?= =?us-ascii?Q?on1o5DLi+8I0lkR5MrNzk/zh8tLGBai7kPJETe0cazFgxFBHZiY0uVPceH+m?= =?us-ascii?Q?BhGCNKjz4RxgoKtsmxGtLNjhXxz5RmY4i4gQPUZBp4SZsgrTx+8SlrX+Y39D?= =?us-ascii?Q?U8dvgu6G2VbC0TQnOKkURh0J?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d906d65b-f032-4b48-8a4b-08d90f104e25 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:35.6026 (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: DP2s2UAmznFHHeASu8BEstzt+Cvn79Assy5ljy9lGW3DXXZ2VL0MpWUBt9df6I4NKTvMl/1QWiad7QMtipE9wF5hcN7I1p9va6xlQZyIVcE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-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+importer=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 | 97 +++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 44fc0dd5dc..eb6de3dabd 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1864,71 +1864,72 @@ 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 g_try_malloc(l1_size_bytes); + 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; + } + + 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620142449; cv=pass; d=zohomail.com; s=zohoarc; b=jY2TeLNhVp2TOpwbQZErIG05vhKKMsABHaCmHj/yhZ88YhddRlBZkOblTWVkrWT1EGjAZtNAdFT2+u554N3dEjJdPIROyWGAHLPQhZhkBFJwBgDwr5MyHY7sXGV7utXLTLmtxHKXS/AEh1EHCsskX6icO1RqzUGDgLsq+440EpM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620142449; 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=wcq9POCZ0q2cmXGVr2WJVb3Dr4rsdY2GxlH8MveUPtY=; b=j2UnAO9Z1kKtUjw2HYQE0UgRx6p/3qIB4jZBnABgBwv1U6VhKgKZnFKO2jlZEScxN/bQ8jQddIfCt7idQHQa2k9Q8mOvBrAmOuG5sF/ied4IZ4wPlw7FNLgbPVEbMLmkGXip8q7drIzkHk14KNxtG1KnNqCT+G4lSAPCyeFjLkA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620142449219996.977588986063; Tue, 4 May 2021 08:34:09 -0700 (PDT) Received: from localhost ([::1]:35170 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldx3m-0006iW-0Q for importer@patchew.org; Tue, 04 May 2021 11:34:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42866) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwrz-00048Z-Nh; Tue, 04 May 2021 11:21:55 -0400 Received: from mail-eopbgr20111.outbound.protection.outlook.com ([40.107.2.111]:7358 helo=EUR02-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 1ldwrv-000711-PI; Tue, 04 May 2021 11:21:55 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:36 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:36 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RydcGj5HIOf/Q7JQGWn3hIOZ7P+A3fmtbj7q/kkP+jGXoPV0PIgohBVS9a9TuTpcHdnkQVhLuRTiVxrOH1NRee6jrJOgAc+k1kQbwK+RIhL884rIa+EJkVQQ2xx70MYyxA/D2o3hKKqZVcCA3ZU1zYqPK1UgjpPd8G08PEj2WABoEfvlE6bhTF6cSUHWn3SHdsVE5RoQxJX+cBSBI+hoBWNzow9NhXT8WYNAT/VH4PnHtkbOwKV9MwbvpYnP7cThi/x8AA9GldkXm4x6+sB6sUKdOvdIW42aB59nwn7tkXNp30j9bw5kBOBl/jnVcXcxeijIaWQahmHHCuyR82NRaQ== 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=wcq9POCZ0q2cmXGVr2WJVb3Dr4rsdY2GxlH8MveUPtY=; b=XQEteZ8oZKh43lHC5h8hb79lB+/wg1hOStUoqms5ru7l2PtX0a37wB91nQ1pKcGBtyH+0nerRmo8ADuKG+PioSGRjwXRlfGpO5gPvZerC3VT2YvMnKFqpCK8BiKWov3FfCnufd4taQdDCDpCgdF0jyP0Qj+SdZPsZeMZkju5HTKdiXfUZj5ZE6TWdc+10qs29DOkXSSesT/lQVLxuT+F0sYMdtRcw8rdHg+D8JaDqFqq4W+NZ605LO37uHZbHomnGGAMlWMh7S6KukMtlf2x2+c3T33ccQC4RcbIKYK3zfZyY8B2xBkKP3n95XnKd6xBZ1HVqjYOAJ1H11l3KYIV6Q== 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=wcq9POCZ0q2cmXGVr2WJVb3Dr4rsdY2GxlH8MveUPtY=; b=kQOGfR+qYGOkHZTZHg15ox65tRdulxfJzsbH51/Hlrvy93xgoj6GcfwbjUslNT3YXEQdisevJ5m2+KRdSlGlKYycuH9c7UJrVx9rOqAORvJS2UIHTyAYwocy+HooIMZ/v6w08wUzwVTE/1Qcj0R+2c6l6KATqvKupKshnB5Ea9c= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 09/10] qcow2-refcount: check_refcounts_l1(): check reserved bits Date: Tue, 4 May 2021 18:20:22 +0300 Message-Id: <20210504152023.322862-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: 218a2186-ca31-48a4-9cf7-08d90f104ebd X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: cSDiwPDsE0mL6DzIe4je7q95CtzJxmEpuEAga8yJmHvLzw3evivYBpP62Y/draa4JiU49fRh8CImmlohJ4oYZyvTB11aKL1bFQ7LAgJylVw9tE0K5xnXEZMut0ACz5nFtfY+rp4fGA/HJNf9LNpt/ScVbMVTc4/jrL+M2+xu2Nb/wILXl3zM4yrs23F7CWbtMbS4Xx40wc4ZAKCizgysSO1lGanWIxgN1RcSbaJ/zT8Le7HCD0xZbQDu3E5qJNJmY6Zv81EZVaCwn7ougviiyQaL/YwVJj8fgyQ3IM2PLtHpE5zR2J+xLGaasDlQDDmdhl89x/HCLhZQ/yvP0W9IzqRER3bS7zlzF14FrzcAkbEIj8SMHD2Om5YFmICgks5Qr+NJTyJk1IeRZMUEqPbUN1gtPenaAs67DKnxoAF1vZy9QUhryWNQ4q5Oq+wsSJPZISDVRnDJKoMbQUOaKWPgWk+Q49TinI7tLxMT9pU3OYLhFuZKkezIp3HrBfWVA22R5TP6O/di7Gr4Ws1WI0CIAd9wkbB6AguoRw+dX+/+oQz2GG9/5gKMohVMwLSeqaQtWS2Z1xPCWD7DJoLQZJVGrfGKX5ohlZJxn9VzafH/UNRwehIH769y4LfJlLTpZpjM9gkXQyNAry3amWPYUx5dBQh12BMUFsHaAnNRowpmAwXohHe7Yap+PMCY+1hMrS+s 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(19627235002)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?m1YZ+5wCH9TliFG0ZMTE9hLGJhKZIeF8ZK5dgkvRIzxpkhUhUYz46MKFREFM?= =?us-ascii?Q?IwrYck2K9tVZS0rjWbt5WbFlp/rrjX6BsDqpPmb+Mws5PdojUn8x8O+hxtwH?= =?us-ascii?Q?rsOFTAXucTJGz1rundmH0kUYMRjOcQERH8qbGiu8c+YxRcHKq+vLKZ24frWH?= =?us-ascii?Q?yZ9yiDFZL8rOAeB/jPvioQ3WOmZ3XNXoodht7CY/e74xY7Ppmjw9QcNWAbgM?= =?us-ascii?Q?pBhJdMxj5jhVVfUO5k/JCOgj8jRzrWTtSU8l/EBA8EyZT6YeNe36zUB/lgpw?= =?us-ascii?Q?wukPJAw33yeob65fSxChvP5FquwKX1uZQWjCYxVZ/4Pk0h+FowuXW9z945/p?= =?us-ascii?Q?xaCu5w0oAGXasEyU6qK8UVcMDUs4YJq1FhVa9scl27VGS277VOaKu5yJlEyW?= =?us-ascii?Q?3Q7eJRVHwtf8MoswvzxwrwUgw/JZ2XOmG742Mita0CZquCN+So7uwzRezI01?= =?us-ascii?Q?+oMcNYo//FZWdwFCRXlDgJq5RijLWqHJFttnBcX5IvWkmuU1azrT9zwGw6sz?= =?us-ascii?Q?oSmNJeeT2pYpPEv3g5ZXcmL88ROAh0QBbcKi0JKuDiFx62JRWIMU6vlWsq5S?= =?us-ascii?Q?ztjAUAG/IZFFTnRLYM2vkRhtfz5bZcejAeXpSzKcpZyBqh9XkxKU68g26LSQ?= =?us-ascii?Q?7nw33Ky7jSMSvc/zRERO+CoS+cFcNnSMnjtPRd8AGgCGCKHERF9iBXnlfSFd?= =?us-ascii?Q?or/nOLr5MZywh/KOsT3dgN+TvdJPhRzXDr4DdK0zntdrNwS1y5y3Kc2NBQR0?= =?us-ascii?Q?QKGflkr4uIenOCf1KZNg9rSxk48anE3BINW+yeT5mAPVDguchERfILcnfgMV?= =?us-ascii?Q?xSIgqVrUbwEi4r7gJ7skdRGll8tcb0R6eOCUwE4VGzMaVNQtaGvAZiXz/TE2?= =?us-ascii?Q?87MIq03skPGeJ93FKPf4rpkkiF5hOJ5CjFbL74BwYi6lVeQJYSyNQHbDATvR?= =?us-ascii?Q?uh1oI/59zk1853slNlVbNVFwKvYcZ5M11W11DnClB4NRFFArGvT4vpYBQUHW?= =?us-ascii?Q?tsXK87rWNu6V1rWIKOSQlZpp5gHe2s7Mote+fPbRsMXPM8bSnImQtoATLmz+?= =?us-ascii?Q?5Tz2B+mdcZHWuqlyz7Scqdm2pDFJ74e4Mg2LF6ooR/BYb4rHOo+KjBukGC2v?= =?us-ascii?Q?lN7P8ihSTagrtQV7d7ubKRoOk2yd6IwbLsAIBiZqqc6EpYH8f4gvepYY4zJU?= =?us-ascii?Q?YfoeX7NN/KBGvOiefQqNSPZ9o7+izvw71tKb6gllsdInzKkhjAztUrmTvh8I?= =?us-ascii?Q?/b+SsbaJg8rHj16t7/5x/daXZrV+gX/G2r7UAkQBivAVgCZO6PZ9qKKaHm5o?= =?us-ascii?Q?O+ThH807JqaEJuMnAysHtSAN?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 218a2186-ca31-48a4-9cf7-08d90f104ebd X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:36.6948 (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: RrDsRMtggkE7umzHRCQ3VhwJib+aKpkUBD1/6z9/BhXRHJeJHxEYUVf0hiCvz7w9vhgGxHNxybyAAOuo7lbIRlUqfs+bWMaruhUjT6pKY14= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.2.111; envelope-from=vsementsov@virtuozzo.com; helo=EUR02-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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+importer=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 --- 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 eb6de3dabd..9a20aac0c9 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1903,6 +1903,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, 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 Thu Mar 28 09:39:12 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1620142152; cv=pass; d=zohomail.com; s=zohoarc; b=CRHZtdrj1k+2m3ObBVZ8Q8SpotaiCSt1sW2fV6Va8MuHXqEOtXL58lb32nZn7dX1zAHPckM1B70WE7saMIK0ht6pm6ypF1w1qUnMPtF0R4IJNfgSsdJsG6DH5aRbfJBZVtiWWSuMZJhW16YwAy/YYG55dZMftwHdZTwpxaklzYU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1620142152; 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=WGP5ny7jB2j1kn05rWrzMJdJwtFl4juqcyfBWeMTHDA=; b=azGOl9s56fkGqFRX8J9Uv/ZO9voxboD2sg30jjWD6sAgei9YAAs7fyAps4nCs4OZjf2kRnPb/GE8dOLiebTALW4XpAhaafe0VYgMTQTB+77RFOm9q4tWyz6axzFwyhN7FbDp6mtGnrb1kHVSJlHzNv9runvtIwIfqrU40HBGtRc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=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 1620142152020519.7958435896529; Tue, 4 May 2021 08:29:12 -0700 (PDT) Received: from localhost ([::1]:55920 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwz0-0003LL-OS for importer@patchew.org; Tue, 04 May 2021 11:29:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42858) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwry-00046h-Nw; Tue, 04 May 2021 11:21:54 -0400 Received: from mail-eopbgr80102.outbound.protection.outlook.com ([40.107.8.102]:61999 helo=EUR04-VI1-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 1ldwrw-0006zb-Ul; Tue, 04 May 2021 11:21:54 -0400 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4916.eurprd08.prod.outlook.com (2603:10a6:20b:ca::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.41; Tue, 4 May 2021 15:21:37 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%7]) with mapi id 15.20.4108.024; Tue, 4 May 2021 15:21:37 +0000 Received: from localhost.localdomain (185.215.60.251) by HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Tue, 4 May 2021 15:21:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eJH4TdWuqNBdO7CGrnlvORr5t38omVv9IDmrk6y17+wGxBpxHoNPmaSpbhyUYOb+c5diEpbh8I/7e87ee+LI4V+vx5bzgvBfVONK3n/bjce9L2CquIWSCMCTcZxMKmEHLAbciis8r0l8M3MU74/otuyG7Z6le1YnHg9d6/4MZug189xaokn5UxsH3RgAP5jKrmxnXB2MmFXtSPZYqM7XIajvDkRXccHhtLOCiLgGCuCSj1s7tSWI3WxS7OBdN65pPRpgA4F3AplsclvezsxBnGLFqPKXXXBvlTNz1lsb6nXzTCwg+T7UNLNQMe4cKMPNiU8FFv4xJ5Z98FR/1Ht95A== 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=WGP5ny7jB2j1kn05rWrzMJdJwtFl4juqcyfBWeMTHDA=; b=W9PyomVEBq9bSqmQE6Qhjsz9pZ0eWWKgh4f42NNGmc+hqfZA0a+9spHMtSj6kNUzEIXQEknI+m08ohMR6solwCbX//y8rxe7D9A+v8D2wfwvSsjC4E6gmm/ciNqetLhTr0MsghxcH4a9SmN5y/Q5BVsm0FpOxQ5H4eR0tXlSUEGgvRnQ4Trz05HlC0e7kAOAApYQXR07WsOn4U+jdJPPBUz5nN8FAjbRfbFdXqu9dlM9DszSjOMMyejSUZ/2KiTXk4I/HjltQJYuLvVgwY0i5JQ79AYHtz04Glt7XUWqG89uls+AVvOUZzDf4BAXfqJ06/2I3HC2/C0tppfj56WfeA== 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=WGP5ny7jB2j1kn05rWrzMJdJwtFl4juqcyfBWeMTHDA=; b=Lo7IDdWqgrAoAj2oBywXL5G4fAj07plzU03y2IhxhakkoctLAqpTB37JWm8FMfRbEqgCbKYUv+vk1Xn5Is/a90aMH78gwJty4bN/J9WzqIcw3akHwQs5JrRDrLMosgP3O/sWUD+5rTRltJNuaru11LMPIWFOZx2bfdBBffwFvF4= 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, vsementsov@virtuozzo.com, den@openvz.org, ktkhai@virtuozzo.com Subject: [PATCH 10/10] qcow2-refcount: check_refblocks(): add separate message for reserved Date: Tue, 4 May 2021 18:20:23 +0300 Message-Id: <20210504152023.322862-11-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210504152023.322862-1-vsementsov@virtuozzo.com> References: <20210504152023.322862-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.251] X-ClientProxiedBy: HE1PR0901CA0052.eurprd09.prod.outlook.com (2603:10a6:3:45::20) 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: 766ac616-67dc-436a-014b-08d90f104f67 X-MS-TrafficTypeDiagnostic: AM6PR08MB4916: 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: QI3Uv8m9ySpLdDZbiU4LkP86l8boe+vNqEZfNo7RHzvt3NGrRf6bmpn+qDrPY9Vuu4Ftnit6dcNgLyLTcRdDs3dA2u+Y0NHnjKElvGWNZpts0qU6O0WcwIlpdieK4njuu7XYRyT3JA12/vHI3j/6RJLF2tq/Ryx0AkaRcOHlfCCp07/3TdytigDRegTyxkwW27U8U0OqgOuKERS+ZNA6LPefqahVQAa13o8siBeTJtKQznD8hULyAbtE+XVWFFfyvjbWCPDnUJUpQWvUPe/zteuFKZU4PV3vu0jNW3eGw5Jfpp/HjdOJMtwzu4WNWzq3E7Pjjrha0HJjguchtwlcryCOdCb6dAMN9OEha+5OoqqAVvrTJN6tBoQbtwYqGa62083Bz4shXdETiIeLxB1Q1c4TGA3XR9SEwYvYmx1HRZuQmsDwv49A+QmyKEC53mg1QVVsPJ59FeUJUlKNNB2l/M8UpfxmFDAoJHyqXT/wo9NEUd1i8mDwA3t79txWMqRRJ3XOOuZ0n+q+Jq6i5dOKgv780QUfIALTzGLnoeanRHuez9wiSqrExhpoDSB5aHlo5YkVdYCFM54gigve6At0KBaESx8mDcnRVyB+D3t1QE+qNeQeqShadJs4NV2gvUS1fEO1VNFqzm/fw5OdxYShBtmXIoOI5bSXBBKEoGrIArxzY7+WDcMjwm+BAcbRqtnI 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)(396003)(136003)(366004)(346002)(39830400003)(66556008)(52116002)(6506007)(66946007)(16526019)(66476007)(5660300002)(107886003)(36756003)(8936002)(4326008)(19627235002)(2906002)(6486002)(86362001)(186003)(26005)(956004)(478600001)(83380400001)(6666004)(8676002)(6512007)(316002)(2616005)(1076003)(6916009)(38100700002)(38350700002)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?0NyvLuhppDrf/HTbhjNOtySTBE4RjYSo1pQRUoFQBkNLVG+Wsm0yq0+W4XEC?= =?us-ascii?Q?hmTpZ9+wckIW270O9FYtXAw3HN2pn8masmfan3QXPEb+uk4IWqZp1IShAT2B?= =?us-ascii?Q?lBv7lAxawHtfNc9onW+hbjD18XGa2B1iqCGrBCMGXIgjZjm7+kBZ0l/vDm+8?= =?us-ascii?Q?xDNKTwZoBoo00/9qPU+6Epi4aRBUZ5T8jhNYzeOXZmIkQbZK4sqHyLDio2z7?= =?us-ascii?Q?sIKxh8Aoi2qfFhRiTLxPPL2BRS0EGK/dnBvu9bun+DjZCxgVMp6bwUZVMjlp?= =?us-ascii?Q?rajb9z7xNBhXK6GPQuVpVe+Y91ub+mErE7UizsdXgSWsPdrYMZuefXzY9Ly8?= =?us-ascii?Q?2dD9fzxLNc7rtrJe8sBWUBlDwYwPln1evPrwSF4jSwAwGLAOJLW280t+1HzJ?= =?us-ascii?Q?lwlRcdzH3zkBnuvUHhBiRWEsVsb2MrDYtSlbdmm2pYgpBgh3+R+Oq1O0qhH8?= =?us-ascii?Q?B0gmDODNKLcPJLU7k32XgcMuk8giwZaw27rSjcE4iDX4czkntLdAK9qSpdyl?= =?us-ascii?Q?KetGRUV9e0jwJw6+3VKlGbpfnabd93dsxyJ7RCkmWwk/taZXVimE0S6jXa9m?= =?us-ascii?Q?CHDwrUqWDP7T4/QCoTxl3QZz/Z8z2NJoRIGAxxdhqc719DOfzN0l53U/i1ec?= =?us-ascii?Q?Rxo5BdVzZGmtclOQ04P0S7N/b52vN2cUsNaNrES81sPmyTJJMuRiJhlEZeXc?= =?us-ascii?Q?2rTnY/Kix4LasrVdNiqRFZ4r8JGIsMLwRmxI0P7mPDa2bAL9eQZPFLYhKKuM?= =?us-ascii?Q?d68lobwNY4Z8nuxaRHRv2ZJ0GGarq2ov8peTUoWvACM8cn/TR4fMp2U7qWOo?= =?us-ascii?Q?roarGZkKa4HJKLoCZUlYWolLKzg7qfs2YNk1ZFOWOO05Txl29QRNztX2Lsd1?= =?us-ascii?Q?kbJWNL5SZsxmVd9enWgnsCeXMhCjJbZ84nsbP51oNmhBEiOZ1gW1gLkG+lD9?= =?us-ascii?Q?8Z3WrEX9FEEJVOMMpcNFDAZEWKBZXp322AEOTFmyUf/wdF3O6KN+sf7XxO/t?= =?us-ascii?Q?fO081VJBAGtRzKA/ui3960W1ADCJWIqMFDdg/wWBlwHyX0GFRf5mmZWkzonr?= =?us-ascii?Q?ONu4RRKz06d4JsWXLKYnXBWS18cyZSkmXtjUOweDIQMXnZtORe2COPWILzeD?= =?us-ascii?Q?BBWxilScPNG9MjL+tidS5RSVENXtXB45NJBo5k2Ejt0D1wAmjI8tXlJ5n2Or?= =?us-ascii?Q?lDuXOtDKwvh78TCn0dBct4V9b1bIYUwZ7hLZJb/H9sP2IbxH3J0GFmJsLu0M?= =?us-ascii?Q?baRq3mgifosaweiIB18eFCmtieTjeQZJraDxkX4UGqKZ5AHIbPkZEJwSxw5s?= =?us-ascii?Q?DVZXi5TYlFjm2kkQE5qATejZ?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 766ac616-67dc-436a-014b-08d90f104f67 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2021 15:21:37.6874 (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: +/QgC40W/YwQYAqCr0sVKTTZCl2YYxjFUxQYIzrniz3WjkZENDwzr771cD/T7EM45Pu/gKITkTRA4EB7ZuMCC2gzvrRqhtETCUC10BCc/8Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4916 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.8.102; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-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+importer=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 --- 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 9a20aac0c9..9ae45efc75 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -2090,9 +2090,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