From patchwork Mon May 24 14:20:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482807 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=AlXvZ1yA; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpfXW6k0Tz9s24 for ; Tue, 25 May 2021 00:21:31 +1000 (AEST) Received: from localhost ([::1]:47034 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBST-0006rM-TK for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:21:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40478) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBRv-0006bK-DK; Mon, 24 May 2021 10:20:55 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 helo=EUR04-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBRt-0006l3-58; Mon, 24 May 2021 10:20:55 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j1rUCHDOJ7/n1GsJ+ymdzEigqu9p7ysQM5m69rej4zoZ810s7BbTvwYjrWuVArXDAhrhnCfsB+QLSxILi99X17wrkPDffmtW38LPdC/CdzrFyCvyCIlUJ5MzwRt9K8Y2apWOov7JXtUhf6GOzfnNIRkdvn0/6F1EOrokjwEnIbtUUZ+bqisrxnW1pqtwCvg8jSS7K/AHE8m2bvm4nl2yXx1cu9d5oaKAZb2z7d9Ycp31VUUB842r1XsYtiMvcDtfJoY5TufEUrc0v1uATVOc1vA1AqhkZqkOSRSqZj+QlR2j6zoQLLlpx1hX7KaOytcci2Dh4DKyrsQtPIovboKWEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hngAEev1nxwNGEj8FBZJ7ONnW4yWK2eBr0gvAaO7spQ=; b=KAW9MZAaHy1m2uk7zadje2YY19CY7PzdOpEzGUaGeINq28AaqvlYSZ0YEASPuNIKDeTi7J6u7L8lzZew1z7/w9gxd6lMglV7trxp0QiLAZLqPY689UkeVhBH96VlDW9YDMgndiDS79loal9TucJYSdWA/OEgZYV5oHXjKGOSvd4CJKAtO3hCq2HkJfqlebr9XqMWc1ke4vF6e/ND/XeMOYSd+ze8gijkHmi0/ls8Hsby5nhz8rU5TjW1SV+v2sTJcdAvCMjFREcKQAwe4qy++LNCgPelRL7nqumpU+2uWDXMTzYWr5XmR1SdsS3A6El1Eop9aVke7rPa3RXSbShAaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hngAEev1nxwNGEj8FBZJ7ONnW4yWK2eBr0gvAaO7spQ=; b=AlXvZ1yAD2s0hoUi1G5KkI1YyImK+4c/T4Q9tfN9D5oyFO6/zpWDsosbYweK+cVfuFNTnRY5yOeE+HJ5X1FoqCwyd0yUXmrAcp0QQfngrTTe0fIRTC+wmjodhV2ipQ6pHlzwYtGiRbTENdTLgskYJfdu8fOyv0ccAbmowrpKu+o= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:46 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:46 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 01/10] qcow2-refcount: improve style of check_refcounts_l2() Date: Mon, 24 May 2021 17:20:22 +0300 Message-Id: <20210524142031.142109-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:44 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 878c28e9-d224-4e19-94c9-08d91ebf1edb X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LC/QVLrEc6ztuU6AqmfPRawsrVWUQHTrG4WPSks9SOuhMebgCoDcKchOcdS4tUbAKLlbgYzyz4pBQ0x1Y45lvqwFreQ2CNSzLQF+JUOLJXOMye4AUSR9DYPWr0rsAcEUhVGK6arvIweWFIfS56oDqR20GwrIThv3J9NydlQcllliv8w8wsqLS1/0g5wq58PFgjjiNCzt5FQ3EQQuviLavg+/nv4Gz9Ugr+8OOBwvuFAwlsdAcHWrCLJqv0MARz299sS7sVx/UNV+sq+m1TvhXIyuG+TTY0TLS7K4Q1DT9dKUYooreM1yOaPZ9Xd36D66oCjYgB8fN4k2ZOWp/F8u2kEYXLX/KC+i3rjqbVfmcH1fYAvp37J+cxVzcNTuamQ23cOa/amFlIa9K5HyNRyeGoWwlfMrDrPA5qJWqGmY2LiWaZPJuHfNaogLu4fwMBD38keyHThJdylvxGJgxxfKmOE2XsBkQmoL3OkX35HZ+OCgHV2C8zCCz7X23hWA7Xca80ugk76nq5v+CLE0uL83u2c2Vpb1LiMEDxD457NciwM+I3WLzFFgo1UapnmzV7K4qIAz/CROVjNP4liBT6fKrsvu6344D7FVOzdFF98ZUMao47fJYpimKISwOicvSsXtFqOuGwjTFqVWGtjvPvi0hKcPjNH30zK99P0eyhgrLLMeEAYcde9sVt7QrJYxGEq6 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: /gsUAJ+zT865DKqttwE651mKxwWGbDH17rAIKECrhc78uXKwnfakO9lEETvTnOTf8zLq8lcoE4I8mYZhZ1PoQugLDYGeofpdlvoiyFxqX6eTguzO5wefUgNVsKBPaVbEF0RLbytee9YbiuaiEykBWPhMkPI2tVRloQ+BF02vxBlxVNndjAbrltsh2MhMDfQYIqQaKgNl++D5G7FSHRQ+mMhWvE+ffpXFrxYzI6nNhyTP11XohFc8JpTHXW3t392csoqRROHOtkTYHtDDuGgX8AaCk6OhIgLPMp9rr1U5u0rpP0efxFIdwobrlNLQTdsEMhvKE19uYO8E78T01L4Dd2ka6SXOmmpjrBV8CCr5hHYtp4wCJFhY7KxkasUuepB4Pzwk3gTk/+LSpsmCOILhXG+XO0oPd5CkpDHzDeA8JAz0uunK/yxDOOKKFzs02y1ilwFAPvaeP75yHY/htIk9rxcaTK3mMcvaGY925xCJ4tpCZNqlMesZXzfT/ORlU+ZMrq+mP+3dd+4WKUHk0bBgOInPAy+QlUkWZbZfTkHO10vYU2o7SmALLwUqJm2zrUfvA4Su5q7Um3G1eRh7VgzdZm9Pc+6dU9lkbRx/OVD3R9N/0n1svaWqmjr74S4nAgkzXD94/AFEXhs4v1mffgwE6w6IpiH/E34bUMwe8+RwG0qaUMNnSXG9v4jD2CYgGYv43Zrt967hfFFw3rqt2SaryZaGCrSy6uMQXmttZiuCyXJHFoA0Y34+coAhgy97X7ZCNBS3nsuadquovHlxsndoJk+aYbTXH3KpPmICln0EVLRxMK2SHV5Vnmq9rJmFCU8d3kqCW8NJaDHhKJ/5+xeAsreOBCBxIbCQMa1ob0JJI3xrlvcutbn2j/2Xa3c+DXy9BbG/mGqFrCb51IxHyqu/87OGQo0VyEhqdcr/vpQYXtP4DpoMmss9AoIMbBDs4tsaotnQiFZxJUN2Yb4EMiT2IkAIMtU+H6dR4bkGtb06Uoe8p5axdIWoTwzFmuf5Wux4nWWwJC3h3f/Mg6GZqkFDLca4pMjQ9edbRH9yk9LwUwfzVMPLHh91Omry2le02levoCLycluad8boxpvGXxu27U8+POA37iBTGHwYiULq4YH7DMhPqml9h5nUoTO5WUSH1SjY8fR7Y8F8ZcflxJXEBZZTDKSWJMqlBFC9hbJ19Z7mOL16kWHjeDFnZ3w+5SS4pI054oTrZhpcAKcRe+iG+wvq2MbaDc8Tf9LS43id25XgPj7TJ7TTF+33zG41jKt0iaNOXcHPGJ8GYnuq8U9P3d4D8wJjPlzThPXWxtzbcBdn9Un+wplyiUEg6XHqRLgf X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 878c28e9-d224-4e19-94c9-08d91ebf1edb X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:46.0744 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IzvGG8xa05n6OI2Db9x6ZmAR3Zar7vbY4cQov+x+IL3Zxmk7yuxQjb6kO06wwHuSQz0kE+bi2LHFK4dd5vJsZ9a/ZOW5UvEvoRAjmP3ercg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.7.122; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" - 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 Reviewed-by: Hanna Reitz --- 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 = bs->opaque; - uint64_t *l2_table, l2_entry; + uint64_t l2_entry; uint64_t next_contiguous_offset = 0; - int i, l2_size, nb_csectors, ret; + int i, nb_csectors, ret; + size_t l2_size_bytes = s->l2_size * l2_entry_size(s); + g_autofree uint64_t *l2_table = g_malloc(l2_size_bytes); /* Read L2 table from disk */ - l2_size = s->l2_size * l2_entry_size(s); - l2_table = g_malloc(l2_size); - - ret = bdrv_pread(bs->file, l2_offset, l2_table, l2_size); + ret = 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; } /* Do the actual checks */ - for(i = 0; i < s->l2_size; i++) { + for (i = 0; i < s->l2_size; i++) { l2_entry = get_l2_entry(s, l2_table, i); 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; } if (flags & CHECK_FRAG_INFO) { res->bfi.allocated_clusters++; res->bfi.compressed_clusters++; - /* Compressed clusters are fragmented by nature. Since they + /* + * Compressed clusters are fragmented by nature. Since they * take up sub-sector space but we only have sector granularity * I/O we need to re-read the same sectors even for adjacent * 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 checking - * this L2 table */ - goto fail; + /* + * Something is seriously wrong, so abort checking + * this L2 table. + */ + return ret; } ret = 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, BdrvCheckResult *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, } } - g_free(l2_table); return 0; - -fail: - g_free(l2_table); - return ret; } /* From patchwork Mon May 24 14:20:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482808 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=bbZJZLSz; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpfXX3kzNz9sRK for ; Tue, 25 May 2021 00:21:32 +1000 (AEST) Received: from localhost ([::1]:47080 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBSU-0006tX-HZ for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:21:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40538) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS2-0006mU-R2; Mon, 24 May 2021 10:21:02 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBRz-0006u5-4A; Mon, 24 May 2021 10:21:02 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EEGyblvuyK3kduPnBWwaYT3T4a/HBhgzXwLB5qV+6orZSIPy+K0XNRfOc/vayJHdSKwe1gzAHM2Nb75OV8Iymksb3znvGGWTiivf2CcDvZTHYD99+z61Da8eARkyseGKeFSZhxR5AmAOwcWw/7lL+wQ/fAgOotnQhWD6Ox+b/JD50P5hLj2xvlgREX3QSDHmaZCoL70kMeJl0m8V205lhld5Y/7lAc+0RRvoOFPWdM3jIlfNQqcGxa1eoue7g19NTQOoSiEdS8fSd9U00P4vki84P5EH4lr9I9yS8IPSy/NjgKQqky/1PIZU83oJXrXMbnHdbWsqFMm+EhsdQ9lhUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ozwcWJK3aqKVEOEne3GdIscWecGJNjVW1O7F8ZCZfY=; b=oQiIVJwIVaHY2a1opYwA4Fhaxh7WyXAxVw/3SzPyVZYDrKJAI71T+XA0SQQxWjMlFGSGfVWRxIosiKqjaWr3gkEXrN0gMBF0klAdZivxY3EwZu4EnIJQ6JIUONvmzC672Ul+vJgzOGiAlLQ8w49m8T2KW/aFMbSw7o6Mgy4sgcGtbItvCJPX6J50vvtmMLeF3trHUTnHL4fOSvrZpx9sRm/otnIuL9SQTHRCUomvMGIw+J/YO1Lax+tZOkA4SUf4uhip2FgglBI7o0pO2GkHqqDqvEFpCWERykqudbrH5G2eLDT9CNZ7UdMkoUBSfBzn6pt2C7oEQ+F81E0z75i5yg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ozwcWJK3aqKVEOEne3GdIscWecGJNjVW1O7F8ZCZfY=; b=bbZJZLSzZjj1l1QuyTvR47rr/ukVx9kxE0vxNIRlFZkt7NhbdniG6OZVBXeD1nWZt4ikCwwsS3IR2kc0ar9GVXbtyv3WTsYWA0B4Dx4AxmruFkdpHWryjhMYcSo9MuUuvC1xk7H+R0x7SWU8Ozoi0ezW1/KECykw6F3uF5T4znw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:47 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:47 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 02/10] qcow2: compressed read: simplify cluster descriptor passing Date: Mon, 24 May 2021 17:20:23 +0300 Message-Id: <20210524142031.142109-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:46 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 36dc45eb-3266-4d60-59da-08d91ebf1fce X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1775; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HjhDz67yDyImnbQA/aJRCiQciI06AM9Ie0G2F7iEnV8c5LGHLvKVRvUt45xeBB3XWirEBNvwdeZoWRGScptYgNNJqi8JsqQoT1d/ONzpgOg7s3NCNFnIzHTw1Jz37UdFRunC+jpIpBPOa4gwzCIwQnc8/lR2riRgwrHbq6Gj9OGRT68A5BvymSkFoH6jSypPwP6zhtYBnbKGIkvy8QitrZqwjc9c6qtOWUc1NA4ZnqID9vm0i9VI9wjOTkcIDngffQQRsGbmm5wSJ/u5aHINILzlF/eGjuguCCT1bmLkbAQW+v5BJCo4TEV+vwzq1s1CuKOAh95tgz+G7fQEF2EgDdYQbQmPhQs9TZyGS5k0P+QLDgklQlxGxTjBwi5AeRP1cakZwRigEqXoRihOdLCV1i9uXu4rlRZUdozTsqvyJJlSczaX/KcJ5ZiT0/BrtGqBKTyEdTAJbytjqfyemTTkMP2TkhJFWIxn4w5npCpJ7Shrg/zjg0PlgeRRecm7sg8V41VZRSUNe++8yrbC2/xt3+0M+AzQcjMvpEJnbRmU0ppsVU1jYmPqw0sgJjwTUJks/8g6pmDVFfPfR+jUiQUARPRaFrJJfTJX8qR1utBI4H96v1mubHdAzOs/6wl6YhE/sE43mf2XC4dyyhcNa5xNw7s0J0P7P6PLfpi32CxIppKBRY9ILxd23w0mB0TOVRJe X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: A/udOuVEquEcrAgft+nVF+TaoxxkEKJ/6UiecY6EN7Uncx+g2680ounA9bo59M++CH4rPf1GhysGGgbQw3Ezz6IX62xFWt3Jy3DZTsMAsweM8oAnnqOF9R98ZqjXQqBt8D5y/kFKFA1qaglqmqQrjhbi3aKQ/wmUVOSK8S25V81g0eQ+jUsCdYB9WH2Th6DSTckrdJEUgRg95hrwSjuHIArliLCxEbwnd3zGApWSuiU4RCXZzWIC2ho5uiwAu+wAXQDFq7eK1y0OYcpQ2clA5po3KfgGhEa9uH0hxZutivCw3U+NhnksF+XYXAEKM6WwTpbzYwquRKZ6djSoQpP2Hd4yFmv4yADUYhnKsoMPDbAc6k1Xt6GjaBp+4z6Bg5V/6Iom1Ku0r1NOtBVTi5ziL6N1F3Rd4vIcULPok7nn7SNBET2hmpCQvHRcSPE1fV3rDpAkf1OfcUuzr6wc/8IOKY1Ti5SLY4t4c7voA+Ul/kPrpeYa1MFNdou/81W8qLfD26SbTyRNHWd8s+nyvZv0M561lrZTOH0v1AtBW7b2HBbhKwC7TCN32iSv3hwSixODGBpTNUDdIrTF0sp103bKCdsMEP76d1sTX5hgeyx0LtCyd2j+7231uoKWE5N4EyRoK1A5wK7YtgznRGy3XwxhGh5PKQKM0OOCeHd8pU5D2bYiziNMJoiUGzYcfOY3oAnrIgdVv3DoHXG1ZvtmNEe7qWT5IXoLDrZ9GoQyRtEFS9NpvO/BjOXF06WznAO7i3mlkkB6N8dTbYv7bUlY+z++Mmkft/fjmbXFzITPXkL73IRB0aFp5svdRcAMtky3C6D62YM2VB2faOVCF/iLvHxihfhQPVNMVM+9/GNM34v+QRxYOLdZJJOSm4wFagHvFE1EqccqLU8yGWc1CcAJgaGM8YTuP4WTF6R4VSOgeFzGpQZ4ZVdNpFzuzb6lAJWL/zJWnYdY4SlXz6EocSwPGlffEt8TRlVhaC8+Dvimm6vjwmbJ7Z1CrORc4eTPYpxm4uXTrF59yt8Rd04asc6S6amYEJP962I8IwngbaJSrgzdxTHqvVyyFEs/SSrjKChCbdOPTX/yH/zVFeKtIISavM2Ws29xfgh87aH40MRa1VZ4PjNXN5NL/oalRhcxPWNxulUyPcIaxlBV75hr9F5STtcLUdTbrXE7mWNRLBbSfQoLCG7Nnd8VO8wN/uUNK4QhrRrgBOhR4HuwERo5KeqQhgT2XusrUkJTIBQkiCMu2qOjDhzLH5cfCr/86vvSjlvieZ3FYRHCG8VrrNX2u/7qvRz+fKGVgtkMo2VBpylgARGYp0WybMiabMwwK6ZYw5PmEokw X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36dc45eb-3266-4d60-59da-08d91ebf1fce X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:47.4802 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LM69y/ko+nPkjN7+6HyESNUruWC9WixtmfnFqPD72ztWfFERc4Q/QWLIQdgyDOlKQnhURydAvb7x7pzP6MSGF41BxcIqZLcTtcoOkUQ7L64= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Let's pass the whole L2 entry and not bother with L2E_COMPRESSED_OFFSET_SIZE_MASK. It also helps further refactoring that adds generic qcow2_parse_compressed_l2_entry() helper. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Reviewed-by: Alberto Garcia Reviewed-by: Hanna Reitz --- 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 { #define L1E_OFFSET_MASK 0x00fffffffffffe00ULL #define L2E_OFFSET_MASK 0x00fffffffffffe00ULL -#define L2E_COMPRESSED_OFFSET_SIZE_MASK 0x3fffffffffffffffULL #define REFT_OFFSET_MASK 0xfffffffffffffe00ULL 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(BlockDriverState *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 entry. * * 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 = -EIO; goto fail; } - *host_offset = l2_entry & L2E_COMPRESSED_OFFSET_SIZE_MASK; + *host_offset = l2_entry; break; case QCOW2_SUBCLUSTER_ZERO_PLAIN: case QCOW2_SUBCLUSTER_UNALLOCATED_PLAIN: diff --git a/block/qcow2.c b/block/qcow2.c index 39b91ef940..b3648f0ba5 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -74,7 +74,7 @@ typedef struct { 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 { 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, 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 = offset_into_cluster(s, offset); - coffset = cluster_descriptor & s->cluster_offset_mask; - nb_csectors = ((cluster_descriptor >> s->csize_shift) & s->csize_mask) + 1; + assert(qcow2_get_cluster_type(bs, l2_entry) == QCOW2_CLUSTER_COMPRESSED); + + coffset = l2_entry & s->cluster_offset_mask; + nb_csectors = ((l2_entry >> s->csize_shift) & s->csize_mask) + 1; csize = nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE - (coffset & ~QCOW2_COMPRESSED_SECTOR_MASK); From patchwork Mon May 24 14:20:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482811 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=aqtED7hU; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpfZc0zkwz9sVb for ; Tue, 25 May 2021 00:23:20 +1000 (AEST) Received: from localhost ([::1]:54002 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBUE-0003Gl-4g for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:23:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40508) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS0-0006h2-RM; Mon, 24 May 2021 10:21:00 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 helo=EUR04-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBRw-0006l3-5q; Mon, 24 May 2021 10:21:00 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SYu8tClf5gH9WK8rl6mglPZ2FG21eG+ktsgHQyuqqsxg+CiLiuMEjq9xhRgzojrpGOWVnvHjGGWP6xpRUQMP0gy6/FUQ00hoTmPXBczYipu/vKxcUezFL7V2i0Danzk828xmr3yURuy8qYyOpEcU4CXS9eR6dPm+G5Bm0e5MNalu22DcWEF89TByJdZ3qnA47/Yuum4/Zp4PeV3qhlFAiMKWrX4cJEAVHobkrHocuseja+eP1oaewcqfn88k+KAqgYazIlE9lbQ7w0e7VrQrZIY15eRfsyRTm9j52c0yfSDOIxMM8cXek+a4f0+TzeCmer449lBkM1a9hL7HQyzOIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DEUqkGNrUiwYcaPCn13RwWqYVXY9FDS0noBTJhwBoRA=; b=Qt6tqOp3PdbQdX9DfjGb9raOR7Iwh2YqMBV/S5KLLSWKmbQHyYT/owDA2aPk2Ws1jJMFqorWAC1uF2XTHNa4Iby6gwdafgaT6rLnCjGW1uY9QQcRRygKQlkqIhRBwb+T4tGZVd+3/uOHqtFApSIFM/06o5aCHTs8cXTQbWsQ2hnso2hKGz5qmYIFyQJazrV4KBH+9qmX/kLBByAwZtMn7F1Y2hCo0oQbL8ZQfcxVWNepV/eF+r4/4JIqsbthSV+CsXEGvII1osg8menykBQfu5cw0zzdoqCxgiYV64DyyXXQzOFr4xMgY/3CbPuQrd/EbrTzWwxa2UiNQDjOyV4edw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DEUqkGNrUiwYcaPCn13RwWqYVXY9FDS0noBTJhwBoRA=; b=aqtED7hUtIXwQU1nO9Bjcy+SjNeKlCw3wyFJDkL4rDAXtWWx2hJAfuHSJ/FkYRdAWMYQP4Qw5o8PdvbdTjm7Aur8R7Y1AkRtJXLabqPsilsqzBTRZSjX0cXkQQCDFyZMvR6OXk3j9v0wv6txHMrhtR4CQ05F7YcK26S8vZfMyWU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:48 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:48 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 03/10] qcow2: introduce qcow2_parse_compressed_l2_entry() helper Date: Mon, 24 May 2021 17:20:24 +0300 Message-Id: <20210524142031.142109-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5eb62270-5809-4e7b-3e7f-08d91ebf20ab X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1107; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KJ/WRuJ43ukO/W7yVqL1jFWqa7otPpTazjLhWeAVXLgqQjULfUzIdWMMAtcvec2v/pe96Ndlik0okHyTqI4QjU9udbEFqb+ya2/zJxY1LiVrcurUMHiWNU5IIqsPH/3CzQbXa3UghqTgi8EMYPgI5A/H2gpXIsJ4hMjYP/TM4e0R/42L7N7XRCDP058H4S8o84su0sMWVWMdJ6ANFwi1yy63xQXp62HgXUc1nkDUYJSVGYhJuNca0BELJLalRr3ZzgEWrZmPc9q8Xp30M6q67QsrM9IvuCOpUCTTip+DbFXVJqv5vtwO6CgNbz1pBoJ1KvkvtAECVaoITVhOdZzMoKF+cn9e8GkoyimYvzX08tVGo5Uib0C+QTcG2adOICOoJJaDFOrxyNUC69NGPGSavUQvPzBtf21t2k45Kf0we14GAR4cXHy7FjjVHElCHyiriUxBQOLKs1wg4x1YL3C+fuSfGXLC4IIrfXJ6MK5n025mi7IJUQ3BptTcicMys/GfhyJAW09ry35KYN89f0VatyAkJeVBajGuDyAodsCliTeJZ46824CNht4u4XYzueLUnK5HTVPYo3gkFZPsO2nwlDDoltUlumkJiOYbpqiMJKBxKQllgweHn7Mpjy+H2XuBgDwAoulrjPon0Xc0Ysw3mmfLd6o2Ot/vM5wDS3fPyKt08HO2EaMcRsTiocDcSPtS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: DLwLbKWpEZ+SlpWNpBs05bcQy6uBkqj9l2Xfi95Ykuf7Bfiqn2sVcyYlAlecVu7l5/wtOeHZu5bRCYv2rZwScFWlMWzTXgNL/wzLObMqzxwaSXT8EGw1MLh7mP77X3x7tKH9wVakiwKyFXwXLMt4JV9NWWRb+fCals3dd9cguNQRJEqYlyK7f1yT2i144Qw+WAu1iUITNiOTQ+Q9FEMLQGiTVgzrPHG9hGynS+Rombr4kQdxRw8JSV+0k/+18L5pR1eeRWSVDzrS6gHrmZaORuAGdGr+FsyzAj6/Z4MxbsMEwOR/pcBleR9CeWVgYhKgsXooXAQsQQyvJmpMh8s0kTi8GUhO28kwtICsB4rhHhP5h3Lsvnq5OqNKJpGL0ckb9KXP2VHS8huqeBfCX1VHkUhQo5QTAL56aq7vUsh3WLGvk9OxBKXRDyPxUsBSfD7Ve+5hdiWJ4tWYlCGSLf5dk5dXomF3bXL4HuU+nefAYVcCqc1mlBv/w7C0YGPayFrK/GkoTjA1m79kVccEj/LItfl2sUGLBZQiExxN3PRCM5zfDdA/bXKCEEGHCMGLhqqbhQjK0rNXT+Njz6nbu+0R4G4VegQX/Ap7ic2EwPUEKWvvKQDw4yC8sCjoE9OW2dVI2gOzDa4qAge25PSNmd/xS/qLlOCEDhT7mTqMkUxex+Kg/ITeNg2byrcecXGJ31lmGk46Qmd8MT062qOWqsI0YPsSVw6QxhEp0RFyNRTH8vFxtLanIwaPnO3ynCYJOw2EBNzPMYkThjPDEXT5nP6umLIlAtpU35QRTpceC8H06oX3V6FPUm5Zu2kc/zLy5IzL5+ps1NWwtEDKjgLm8xjgI7UHKwhbYFbqtpUa+EEylqMMp9peqh0M6BxPych0Nx7i3zkTrvFwpm7/tbMqCDcb4aBFeiJOj8caly18s8oGmPGTskSqBEFI2EOZVLdM38MDXogFiqwpadW67lsdNapX8rVqFlVXeXYJCK0DVhrs1pmKyaXHEDKyShQ3161aE+FgpbOIlmsWj2wYU1RSkiP9lgf5AtggUghKClavWNOFvuOCTE/FbECJG608/hOC/ubp6JGQtUS6LQ9EKJam3UvEgNMTjtXSurGz+IrFOSkJOHQgH+4+uVGj0EOY88WvK5tbRLpRrvhiWEOvbJc3Zju7rfkZL4X9lepHnqX9eqa2429MsJkztAdCCFc/T1agDFPhVAqqi7dur+3ITZggL43Mq5QaStdaHJU7sTX36Wm/0es7D9dV/czRQZ3Cw+yafcnRTShVktp1z8SBOd1iWaoEKFFolg2bNZC/LPBn4iJ+eVOATBnd+CthITm3ochQsbFA X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5eb62270-5809-4e7b-3e7f-08d91ebf20ab X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:48.7128 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ay8VbO5HMovbtey3NDYwFGxbtoGMnBzSHgik1P7bIrR7g0Y+ALZl/EFpt1URK6nxPacDdkFZcB1iepjJAKtiq5UpvJjWKRAOhFetKpy2iO8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.7.122; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add helper to parse compressed l2_entry and use it everywhere instead of open-coding. Note, that in most places we move to precise coffset/csize instead of sector-aligned. Still it should work good enough for updating refcounts. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Reviewed-by: Hanna Reitz --- 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 @@ /* Defined in the qcow2 spec (compressed cluster descriptor) */ #define QCOW2_COMPRESSED_SECTOR_SIZE 512U -#define QCOW2_COMPRESSED_SECTOR_MASK (~(QCOW2_COMPRESSED_SECTOR_SIZE - 1ULL)) /* 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(BlockDriverState *bs, uint64_t offset, int compressed_size, uint64_t *host_offset); +void qcow2_parse_compressed_l2_entry(BlockDriverState *bs, uint64_t l2_entry, + uint64_t *coffset, int *csize); 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_entry, + uint64_t *coffset, int *csize) +{ + BDRVQcow2State *s = bs->opaque; + int nb_csectors; + + assert(qcow2_get_cluster_type(bs, l2_entry) == QCOW2_CLUSTER_COMPRESSED); + + *coffset = l2_entry & s->cluster_offset_mask; + + nb_csectors = ((l2_entry >> s->csize_shift) & s->csize_mask) + 1; + *csize = 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, uint64_t l2_entry, switch (ctype) { case QCOW2_CLUSTER_COMPRESSED: { - int64_t offset = (l2_entry & s->cluster_offset_mask) - & QCOW2_COMPRESSED_SECTOR_MASK; - int size = 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 = false; int64_t old_entry, old_l2_offset; unsigned slice, slice_size2, n_slices; - int i, j, l1_modified = 0, nb_csectors; + int i, j, l1_modified = 0; int ret; assert(addend >= -1 && addend <= 1); @@ -1318,14 +1318,14 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs, switch (qcow2_get_cluster_type(bs, entry)) { case QCOW2_CLUSTER_COMPRESSED: - nb_csectors = ((entry >> s->csize_shift) & - s->csize_mask) + 1; if (addend != 0) { - uint64_t coffset = (entry & s->cluster_offset_mask) - & QCOW2_COMPRESSED_SECTOR_MASK; + uint64_t coffset; + int csize; + + qcow2_parse_compressed_l2_entry(bs, entry, + &coffset, &csize); ret = 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, BdrvCheckResult *res, BDRVQcow2State *s = bs->opaque; uint64_t l2_entry; uint64_t next_contiguous_offset = 0; - int i, nb_csectors, ret; + int i, ret; size_t l2_size_bytes = s->l2_size * l2_entry_size(s); g_autofree uint64_t *l2_table = g_malloc(l2_size_bytes); @@ -1617,6 +1617,8 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, /* Do the actual checks */ for (i = 0; i < s->l2_size; i++) { + uint64_t coffset; + int csize; l2_entry = get_l2_entry(s, l2_table, i); switch (qcow2_get_cluster_type(bs, l2_entry)) { @@ -1638,13 +1640,9 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, } /* Mark cluster as used */ - nb_csectors = ((l2_entry >> s->csize_shift) & - s->csize_mask) + 1; - l2_entry &= s->cluster_offset_mask; + qcow2_parse_compressed_l2_entry(bs, l2_entry, &coffset, &csize); ret = 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, csize); if (ret < 0) { return ret; } diff --git a/block/qcow2.c b/block/qcow2.c index b3648f0ba5..56a69b26c1 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -4672,17 +4672,12 @@ qcow2_co_preadv_compressed(BlockDriverState *bs, size_t qiov_offset) { BDRVQcow2State *s = bs->opaque; - int ret = 0, csize, nb_csectors; + int ret = 0, csize; uint64_t coffset; uint8_t *buf, *out_buf; int offset_in_cluster = offset_into_cluster(s, offset); - assert(qcow2_get_cluster_type(bs, l2_entry) == QCOW2_CLUSTER_COMPRESSED); - - coffset = l2_entry & s->cluster_offset_mask; - nb_csectors = ((l2_entry >> s->csize_shift) & s->csize_mask) + 1; - csize = nb_csectors * QCOW2_COMPRESSED_SECTOR_SIZE - - (coffset & ~QCOW2_COMPRESSED_SECTOR_MASK); + qcow2_parse_compressed_l2_entry(bs, l2_entry, &coffset, &csize); buf = g_try_malloc(csize); if (!buf) { From patchwork Mon May 24 14:20:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482810 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=tHR9/H7W; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpfZc0Z5Lz9sRK for ; Tue, 25 May 2021 00:23:20 +1000 (AEST) Received: from localhost ([::1]:53930 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBUD-0003E1-Vm for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:23:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40544) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS3-0006pj-Oi; Mon, 24 May 2021 10:21:03 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 helo=EUR04-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS1-0006l3-KU; Mon, 24 May 2021 10:21:03 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h42hG0BBmIn7R4DZ25yZli4zUdmNayPdJngmFRhbvyNl7SLHDYJHGUr+8vkB6t2iuMRQRx2818B7Zwmffj+21LIKWRCY+xorsE7t1JUYJRsmOemshO4IVY18233A/bIQ5JYO9D2OMb1TxlO3Vk2RCJlawnMAZWFHPM5KNwhs9YElVQtn6fwePkXMkK1ZJNCXnYQ6mIJaMPlbFnneXplOfWRPlxf4K/U93wnKPemuSrd6lGPE2WilJtPBDI/GgGW9AhM2lnPPa8ozQDEP4GzcswSR3sDZcDwdkh8cMiTA46cMqShrR+PM+aP2QHjRlvj+bRncbouuhXY9eAq/UpHjqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RZ5wxpZjo6CWp8sO9JbQAwX3ht0ArKOrRW9o8GTApMU=; b=ZTTdGmaohXOYO6XRUnGgZhl3q15k+7KIeu9PhrfWmdmUuOQCaab8iK2ubGFrxQ9JwOe61ePzwYTfV7zbvN2iI9Zj2MGtNVlCCj5hNKfkgurXa8237OdwPs7zjSfFASCVRlcebH1F6LC81EymKxXpUTkDo4PapKdiQKEfYB2vb3Q114Slao9/HsuodDU1HXvHxymSO3fmYEuqDrMCRC98TLKV6jklDbi33phz7w3HbQuuHz3CvOw0DMvOIaUFh8i4oz9zQf4nflxlbntV0Y18SOE8CMV4KJIm5Oki3rd3IMlCadsN3vmgUrwtm2N+w9sRyVevSzKUr5vKNr2SM/GDKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RZ5wxpZjo6CWp8sO9JbQAwX3ht0ArKOrRW9o8GTApMU=; b=tHR9/H7WWcFnXWs66mVZvHQu++OMgjZpt8x0YPxiLgicrYcA8DL+2c3cInFCy62G79zDDj5G9u/BIlBKxeV/5+v8lWRqnqI6dfcG68TdL5wNdwBzg632RJ8DRRGNimQ/X1g3d30vAdkw8tJJWUsMEXxPJM7kZdoyRan+3r82XGw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:50 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:50 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 04/10] qcow2-refcount: introduce fix_l2_entry_by_zero() Date: Mon, 24 May 2021 17:20:25 +0300 Message-Id: <20210524142031.142109-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:49 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 23dd0b0d-238b-48c9-fb63-08d91ebf216f X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: alJblTzhZGec6gLmPw9UlsjIY1U76ciwdgPm7JqxBwfCtnwf9ExPU4xKUO2XjN6PGFBmdPf7747nw/MobDnDUaKOkElXCPWYV3gLsPxVsq32qD95UMECANHkJNW6ZmyExTTj6QTCaN4zLlhNQPsyCOTpPJgesnZBC7aWPtptryrDaMetx5a9dipUEkdg7AMkOimJbACoCjI+WYRsAwgX4FMXOBg1fz8O+IZ4qG6Jvbnv8DVfuf2FRP6jGudvLAbsrx0Vs0YS0A28Jn1crnSLduui7XUZ2AvpmGhUPc6aKae5SUWN5cjpxI7EYT79lAoELrYQQxFQQ5vIJe4r61F7HECLdI9fZGMUeVetgxBjlZ9Z1ax3mqByunUXow8fR8UvYKrBwMCJTSO/SqLx45r1lVNV/cKvneLFE1ibF0dzRA8Yp7iG1Fnp/wWaGbkMpC9G5c1fo5up8NXL20nrTVfKaqn/33/GVjSoQaInI4DOPHonXCrIV1VdwQxW3kLba1Ps4IcwqyD8Sc8mt24uS8F0xl9nTOPlc78h3YbPAjQxQ4tlRng5iSk5HH7bpHC1d9qOD70HkOFARcEAKqjFigUI/sum9GVLlYYeDSMCdQut9Bg4VDcfIYk2adk4rYhy4KlSCblQrZTWKrWJwaR6XLKWvQzQilO7FeyDi7/PK+ND0MBy46X9sZkPHU3cwQsyapP8 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: pWk/50c/eIp2tJ5TT7eRYeIVHSKbh6BFKmz7if2Wb5JQpwOLQAcdd7OXdNWSif9uC61HuyZf8Jy35sLdItBquUg0FJ4NnDmr4Lmr9usF4TJdC0YXA8eNPJZIk6efVAnVOsMGRPk6klobIGbCtCERxXc/Ng9bn5BzGpALDG2UAGwYr0wFbZv8EKAEQrfLbQgcdhw6F1k/ZQXwzSiydXBYLi1yEEC3sKuyK1CLRI4KL9PbaI03bc5+Z8TaEzGFXaAYqF28ydf/j/qrb1y1M56aIgsEKDFTDofnpG/3hEg21DB1E6G1sX6tIg+cxZtVwj0+vi+qkvDvqCUgPcE1b8VQ18fMXZvkfFQ80GjJ4ZXkwXpc+EIXqQrFJsWHMzL3ffIYJs3NiENf7c+6dSzwEjlgHG5hyFh02+wTh1eQKA4j139BPIqWzIqWgZTLAt5yo3ky6U0hP7Sk1OSVBSYKwvAQO3qVb3FNpHMCA2z3gbOJZV9ZimY5eNUJlcRvEQlIHyBtL6+iOWUeckN/5JvyPBG/B4T0iYh2Pu/3pgr0/Nf95UYZRV5y7mEnH6y1IJm9EPSoGVUT5JggV6Sf+RWbgfxOMcYR5T+k3UHiUmgqtdbawjj+qHyAw1TOkRHJJ+7SD/NB6YI0un1hudMnGIvcJZXkeVrKvdxRAAHVZV5bBrMQ4MEpnO6sBWuvUwNYZg+8pW4bGNs+Q9LLETex8/1TEGnDX0AUJPQn9vUe6ycUfACLmrD77GoV+J5CLmIpsu6TQiMjfnZXWesjxKClYc/WwVOHZ6Vrwsu6k4mZ7BSDSW/6jTHca//0YZ3VPBYPPxXQ1EJbk05x4yKW3jlE68CxuE7lBHl9Ed+90p6X+vBloPX2n3A8eA2ZdgF5hop75eejTaQXjGefi4ODN9MjEs2/6dOolR7DHE+epbuJZBdeT22D6oh4Cj2tVr73CF46bTeZa/q8YWVpmTD4Zqe2j6IESRc+xdZ4BEc1MTwbVvKyJFDdfJfS3BwOgWZuxMV6ukuc7zaXcEYjDBLCQt3oFHr2b36xz2vaik1peWErsN9aBSWN7z9pD4LiMZOpBLVpLyaBJWQF0JQq2ZafBD/NwTBfe96RaBjFPnLi/RIpqKFoalBV5Lqd2FaftMxa0yai2epgJPbnZcoNCpa0SsnxR3JdQa+K3w42TmIgwuBfvHZivQk5QG2zJ5RLOpIWQKTOf+3UTSEYhspXhzwEgEUlAGThNVwIt9cZcQlFVeaGeSE/0O04HBuUlGeBFhqPEqZ2VxLgCB00/wCikmOYRv2j7JHjhmnbwYBfh+rfTISsWSacsny8pHqARsHIvVxqfrnwDms/Ndkj X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23dd0b0d-238b-48c9-fb63-08d91ebf216f X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:49.9842 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vp8H0yvbQ/dkXnjxeOYjgEhtyc1zEaGFsfvyiSUcS8Rt6KGY/qaHtk03FNShRp6Sw38XVEkhzpCi/AeoNoMMsP5orAYJbVQG8cSSOyIxuZk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.7.122; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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 Reviewed-by: Hanna Reitz --- block/qcow2-refcount.c | 87 +++++++++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 66cbb94ef9..184b96ad63 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1587,6 +1587,54 @@ enum { CHECK_FRAG_INFO = 0x2, /* update BlockFragInfo counters */ }; +/* + * Fix L2 entry by making it QCOW2_CLUSTER_ZERO_PLAIN. + * + * This function decrements res->corruptions on success, so the caller is + * responsible to increment res->corruptions prior to the call. + * + * On failure in-memory @l2_table may be modified. + */ +static int fix_l2_entry_by_zero(BlockDriverState *bs, BdrvCheckResult *res, + uint64_t l2_offset, + uint64_t *l2_table, int l2_index, bool active, + bool *metadata_overlap) +{ + BDRVQcow2State *s = bs->opaque; + int ret; + int idx = l2_index * (l2_entry_size(s) / sizeof(uint64_t)); + uint64_t l2e_offset = l2_offset + (uint64_t)l2_index * l2_entry_size(s); + int ign = active ? QCOW2_OL_ACTIVE_L2 : QCOW2_OL_INACTIVE_L2; + uint64_t l2_entry = has_subclusters(s) ? 0 : QCOW_OFLAG_ZERO; + + set_l2_entry(s, l2_table, l2_index, l2_entry); + ret = qcow2_pre_write_overlap_check(bs, ign, l2e_offset, l2_entry_size(s), + false); + if (metadata_overlap) { + *metadata_overlap = ret < 0; + } + if (ret < 0) { + fprintf(stderr, "ERROR: Overlap check failed\n"); + goto fail; + } + + ret = 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, BdrvCheckResult *res, int i, ret; size_t l2_size_bytes = s->l2_size * l2_entry_size(s); g_autofree uint64_t *l2_table = g_malloc(l2_size_bytes); + bool metadata_overlap; /* Read L2 table from disk */ ret = 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 = i * (l2_entry_size(s) / sizeof(uint64_t)); - uint64_t l2e_offset = - l2_offset + (uint64_t)i * l2_entry_size(s); - int ign = active ? QCOW2_OL_ACTIVE_L2 : - QCOW2_OL_INACTIVE_L2; - - l2_entry = has_subclusters(s) ? 0 : QCOW_OFLAG_ZERO; - set_l2_entry(s, l2_table, i, l2_entry); - ret = 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 = fix_l2_entry_by_zero(bs, res, l2_offset, + l2_table, i, active, + &metadata_overlap); + if (metadata_overlap) { /* * Something is seriously wrong, so abort checking * this L2 table. @@ -1705,26 +1745,19 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, return ret; } - ret = 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 == 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=%" PRIx64 ": Data cluster is " From patchwork Mon May 24 14:20:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482812 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=hnDGE+1p; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Fpfdz59zrz9s24 for ; Tue, 25 May 2021 00:26:15 +1000 (AEST) Received: from localhost ([::1]:32948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBX3-0008JO-NS for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:26:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40560) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS5-0006ur-Fa; Mon, 24 May 2021 10:21:05 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS3-0006u5-IX; Mon, 24 May 2021 10:21:05 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZzlsOiRzYNFDtqeKMcvnmGbaDXIbV3aLZU2TIFudiu8pOUaftGpz11t7j3lt/SvK0bJqAjuZK5VzLN1QdvBOmcgHc0FbF1jLMwvH7HuvsPVzfZ0msSxfexEcHDdYcn8sC5mX3dnyqVVm38cEekRsJ/0rqJUjOE0C0qyD8qnum9MLhYE467lGswiBWMM16FtJH8mXOgkJjgfZZboa4Rltwulzw0k/9NCohz0YdXUWd9pZRExwVU3BKYu1HIt+N1gBGtx+qwipzko25EALxrDwCWGLVGD5xvMR9diDnYcCWlSH15PrUzOQNZnDW7acL37B8zi7dyXquq4UMjM9XrYxmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tJSAqSMQChtTeR2gMDl2jR+cz13jXFGwW7pDat7i1tE=; b=eCHcnP/8N8ymMwIrxd+GwtBb7+DSzl5oEl+m3VTGIgG9RGF78ZnCtwkbGFGbK6wKINkhSrB+LzY4BasJ/UYKVgv4ts9zzkvd+7b7BNFCDHxXxfYGV2nbcd96izuSDNbcYZWzHr+C/pjlZQ0wzjQcrokB0SnZx8il43YETrSASxyTKPjsu6dh5VDpT5+L0I3WJIzrVKkgwf9mcJ5J30opdqwAA8ouPdPSPC61ryfP4jNA44XY69YA+9whS+HHsLMR6ktuoDKLoBCmB5fi/Ce6rKMEmQNJUczcfVNZsKUmMfMF0uQGefaQr7LEoLjD8gA+ZS6Mu282s7N8zeg8sgLr0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tJSAqSMQChtTeR2gMDl2jR+cz13jXFGwW7pDat7i1tE=; b=hnDGE+1pqqVIfPOUBGLUacjl+tvTow7L7f8sBKRw/c7GOVLB7sRWjcoVg3ktKeG1EJ8myKVzgIjTsfwlrUiZoenzKb7GLwjmcI/nXnURuiGZlmmWUDsqaogFRqmRrEI5JbhQL8ZD9P3IZMAjd/p3iSuMxg4mj2BZnMeTv8as9mw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:51 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:51 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 05/10] qcow2-refcount: fix_l2_entry_by_zero(): also zero L2 entry bitmap Date: Mon, 24 May 2021 17:20:26 +0300 Message-Id: <20210524142031.142109-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:50 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4c1419b7-6adf-4d78-4fef-08d91ebf2224 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:136; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LgKOLtNdS+vIklbQErQid2shG87fytFurz4wsawchap/LdrqW3xAAkkwJRkinfO1/4ODygPdya344nr6SJtu1VeBFZJrxgso8XM/YPkmXUU2TGFBxggBiI4UTv/3qFzIqQwrTYR4DY6CdSmszRyOYqCfE/GMrTfzlo+wsK0wEDfHpqZH40scCUCcENL+87/AfK7jxVv/Gz6EgX7ysz9fiEBTerk01vppAJoxx0H9Pr71kH33+e74scCuOww5gyb9liQ7DQvgKzVRiYDvG8AsSn3iVmy9mKR1X+B6cFe+75ZA4l5ZBhJ37zUontBrXnRaPCAOomworXej4MbI1+1mgoUKpAvOTvisUUhk9D7juHzr3A+NIv4O1/evjOTYNPaq/F80/jbUY41++88J9GYTZdMngQPM7eYoHFenTjRH3og+flsblbqoOsYnOU36/bH3pZEQQIVPU6ahAigxXxpqOUubdFzTu8nDsRH22JzlmAklpal6rVxP5S2wGq8Ry5IOqRrpgNJvSpFbth3jSwuMQMrXDl46IgbPsuXarwcPEaQ1VIKGHIEXs+Mbud+iyr8TnAFGC4xlY1G7IJrkQnEx2K1W6XSg16PFGLJG9EvC0GT0vXCOHNTxyPiTvjB4lKGEBsNh0HhcWPN71bjAO6LS7vnF4KR9gDDRcG1JEfeqwAMto08RK6ULnHsS04/Tu1YS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 4nurqiv+WZCm9RH6osSjDZMGbdLn9gZABeURWpq9HUg17yh1VBu/tzPRhF9ZfzUJs4Um04JvelNPmlnfefRFebL3SmMhJ6MoeX/QZPagB54MXmhOkSKaZZBLusoONCVMwpPozgXvIy3hd32IAdZQ2IFcbddW9ZyrqohkAobNHoZaMu5u2wQW2wBvUIEItFPLHh0ssg0NxQUNmpbZHD+mRivUqD8+zV9+H8eG8cLcUc39KDJd2CmiZoO9xqu2WDMiGx+b7IZ4IOlGYx1bPj99AM1pgRruPCAo1+0VSwVCcayLSIx0YOFmEhEeB+5Kk2XFcTO6vLMxV5wAfBZmNdZ+8F9x/IaKKV8fDAX8xLF8aI59WwC350YagblAjGBQbHJCJ35DU6s0wMqUxMqTKkJ7vj1wPDIdEjWg/+QO2CJUgwAHVRiiZfRIJYMOUXrQvh7VH5GPLCeT5klhshDimKwocP/nAKZ7c0X2OaBOTrL44fI6WHfDG88V4mqV7mSwpMotLTMl0adrB2Ua2XKL0kiub61EKyjlh7MLbhPhPywpYk0ZqfqSYwQnYlXkx5cQ23XZJxksUcQQjUHE3/SXGn/PQEPZF1o9Ms9QpRmRdVn82/vjO9+DlpZPmeHsk0Ss7/mMANZPZMxdr4iV3YDYCI7JNgCK+47HQyYh8sm+EPrEI1PGgzSU+/nQg5AikqgSKlyE4JDoMnWwQlxHDRtrwVwQzSuwg3evoXcLgLMTga1ilcE/H5bg0G9ywF2MTMD0ZBWJIn9QG7eQjI/URS4WNN9e+9r3IKvViHz5t8STaTWFst4Krmixk9X5M7/mP4tUmTBJ9yMYe4LUF4jTDxSZekM1IKRhQoTZyFoCtUkmcXUN+h3MgVPHAvKlVbHsGlGjGuUGJ9lHanPQQnVoK6KQxkgk69AisZhKObiPsiyvFDGb3ezkPCdZMtay1FGmaa62g64IjYkkOOF6hIh7YOUpapSVxQc8npDB6R2Q+n53csqvXHXfwW6csx2k8wrbUaQ7gLmNtnBZUT9DBmveJrN7OYgIir4zV+2At/Wod1UKL2uGvy3Chu2hlDCPJh2bT7YbwCzZbe9sBe8kVYiPw4M/McECsArYpU9yQG+TdO6yyhzz0t4pN4lYNkCpNch/LIp+g3cfKvi8Wdux86h0R6fR8nj3AwddKyZdePzvT6GI2bi8azRHhDqyrYsuhPS+GWeVkc1mNYiIi8OWZn9Wuy/NpfRRALq2mlaWzlSb0AXRrcCkgYK2wuBCFiNnw3iaC0hpLxK2TsfLxGCuSgHZ8pkl9F8eA2bfJSOCWjLAmSyvrV1/8mw+vSD9d3TKyd828o87esur X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c1419b7-6adf-4d78-4fef-08d91ebf2224 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:51.1262 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5OviRoblf6S+ys2uMjIfaZaB/ixChuCPp4R4Z/RRk83LIfi+E64Nn6PgWKiaeseqG2x44zYmw3S7pevZhIicbxoTijRWixBN3xx/jsbZLE8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We'll reuse the function to fix wrong L2 entry bitmap. Support it now. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Reviewed-by: Hanna Reitz --- block/qcow2-refcount.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 184b96ad63..f48c5e1b5d 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1588,7 +1588,8 @@ enum { }; /* - * Fix L2 entry by making it QCOW2_CLUSTER_ZERO_PLAIN. + * Fix L2 entry by making it QCOW2_CLUSTER_ZERO_PLAIN (or making all its present + * subclusters QCOW2_SUBCLUSTER_ZERO_PLAIN). * * This function decrements res->corruptions on success, so the caller is * responsible to increment res->corruptions prior to the call. @@ -1605,9 +1606,20 @@ static int fix_l2_entry_by_zero(BlockDriverState *bs, BdrvCheckResult *res, int idx = l2_index * (l2_entry_size(s) / sizeof(uint64_t)); uint64_t l2e_offset = l2_offset + (uint64_t)l2_index * l2_entry_size(s); int ign = active ? QCOW2_OL_ACTIVE_L2 : QCOW2_OL_INACTIVE_L2; - uint64_t l2_entry = has_subclusters(s) ? 0 : QCOW_OFLAG_ZERO; - set_l2_entry(s, l2_table, l2_index, l2_entry); + if (has_subclusters(s)) { + uint64_t l2_bitmap = get_l2_bitmap(s, l2_table, l2_index); + + /* Allocated subclusters become zero */ + l2_bitmap |= l2_bitmap << 32; + l2_bitmap &= 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 = qcow2_pre_write_overlap_check(bs, ign, l2e_offset, l2_entry_size(s), false); if (metadata_overlap) { From patchwork Mon May 24 14:20:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482813 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=YA0mh6xd; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpffZ5TNnz9s24 for ; Tue, 25 May 2021 00:26:46 +1000 (AEST) Received: from localhost ([::1]:35098 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBXY-0001Ns-QU for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:26:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS6-000716-IT; Mon, 24 May 2021 10:21:06 -0400 Received: from mail-eopbgr70122.outbound.protection.outlook.com ([40.107.7.122]:51129 helo=EUR04-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS4-0006l3-J7; Mon, 24 May 2021 10:21:06 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lyxPk77bfDRy8DZXtTn4E06NdhtrF4Nkk2qWDIq0KAqvsr/nk+zYZWS9ZPB+sGMq2saZ/6UMnySA/+XJ1tAVrK80VRzuw/DjbL3QhuNS2seSUjMUxoof5n24qkZ2fWJJZxhTJKFJUVrjgeDQQKdX2GY5e77KWYbAJLGifct20HiAB4PXkQMUdyvs69mP9j7f2S3NJQ1yVdpP8bmBw/FipkjzdKmbFgcq7ypUdoc3ADdhE7smZTrRwfe6UBb/Fap/l0TN/90cs8DMlwkVmVNBoOplbIF5X2kmfRpMuFE4if/q3VzIylqmW223NaajKgeKdWJLjTagTb/FjiyVzUs+nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8uIOxITwxhggvesR9LxaQVjj5hrQdYiD4V7SN/sbqXA=; b=N6rrYH3lr+M+L5GIHXkDgWgxU+bkYxXQPKVG7TV1Z1eTenKsCg2omuH+yafua3wJHbJRDx/JouybUQuJWWQlVHc/gKifSEGuXWvwmGRTcskSME94vj8AJ5NI8A8T2hw0rgYzxfzSy8YBTAapuXusyCnbBzjVK1d+g8ML6OZctEVTmH1nXEylFEnv4mrW1Uee0eTTzlYC93EjDxHwrRlF6LDn4vqNvm4cXMy87J57bo0UmtnFRCdOZaicZbAXtywfcRYpnklUo0RO6Uwws8K0fpqHz82P21jlrGELQhd6mFADQLzT7DfofPshh0V601Jknv2E+IJvvdALIdrsNDhHng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8uIOxITwxhggvesR9LxaQVjj5hrQdYiD4V7SN/sbqXA=; b=YA0mh6xdAKU3Ip2AUipsOlbvESPSiw1poJR6/KI2QqdroZ7UIFnCdtHZ4enAUlEbEY5g0flgUaOp0Dgr5sR3hha2NxyD69kTF9TC0MZo8y2SzPFyWCu5ZYMt5sfXqW3iW5It7wYJeKjD3SuwnWGNKXV7DmIa0nvwVGs3nmq+/Qs= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:52 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:52 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 06/10] qcow2-refcount: check_refcounts_l2(): check l2_bitmap Date: Mon, 24 May 2021 17:20:27 +0300 Message-Id: <20210524142031.142109-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:51 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d1d544c2-560d-44d3-a76c-08d91ebf22d1 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:389; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +IyoQBUlPPx4mjRF7gesO3+ICH7FiDo6ywgUmfcCYgO1jCRcpRS+qRcpOsFbyXXmQbpizwePsjHK51s1VcACNGG5Lqyf8C/PwpgJ6+TBZQFN9/8dPdR31ZOaujv2IWwGUeggWoZqgcmykFk3rpMeYAPSa92QhOcUL7v1sozBv6GadLxnPHWiUcbuh6uH71snae0+7fRSnvLKb3o7mN8MxLMPNJ+6+PwmH5SYwISqgjMCqdvKdKV9/Tr6ISg7DYTAhf1CTcCpBOebrjmq2OjdBLmOas10ScXrci9783uaiDzxeud9AV4MQb04Y5KNb2hLelL6PNe8eRuk5Bro695ubFEIDR38lg7Wa1MvHk4GW0JaLi9auBxULZcTH3oyXGrm8686KnPDgr/SD+8Xla69ZZinM/kR2odGN0jrRQwRcuAb0iaX2d01vf28Ff2vE5gf8o2lAMzRxRK0vaekvC/tDD6cVASGg4XsaWvFfvtyniaY1nCnqOhCJHVopWI+Jwmgtcbn0oQg5Trk5j5njfqMpOh/cQftuK2KszPLzhW0qJGM2dK49jI2hGDduwe6ayvlqU/jl2r9mNuGFurkyFUpLpofYdE4RqMaXusHk4aW32t2gvoZSr0GyXObLhby6AOK0md173WQsiMVrrD/QDG3vDXn7vhfeCS5WeUViz/bSbY2pPsQWPpE97I5UJoGbAo2 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 1lMT4iQxsgbF4yKqKS8BRJ1z8BqcsuGr9yIXKYfGK4PSSm83VjtXeooTAbf5MlDfWujtzWs5Evu2EHMQvq421nx22Sjd38juyxtLZvyLZJCBJ3vgGkShptl8EpQPrpcJjbhgfZufEML1oupt+c6Ynk3kcl65rT/quh4/G4JXywf8xvY4e+MdTO+Ja47SeHxgRfEVKi2YYml52iLR+pNjxRwz9HzYI7ZiMrHVUOxQZfrbPwgIVOrOh2qASmmPVM9BQzi33L1oiYmDXOvWlIfTXrQI9KIO8FBc8pRa8txG5aseyyRGUO4LOav2tAOp+qz63qPXKiodpZABgF92rdTIj5QF6AzrcAAIxIdJ1u41fMADr5tSltxhQpxnwK3tvztSamd8xIh0oTkQ1Nl4IarIgLChKCUTX5kLvygfIWnSx2+z1Dgd1jr/n+D9gOEr8yQDYmaPTa2outIrBM4FlH3sUCsZEbEgfhbBqIrAluDw/M/UOONQashbX78SsG3X7EvBMM0GXWhYhKpy8Hm+2zOOn1fgahTFgdXRYAneDABNlyhpq1rJ0pCmD5QPoO91/iqC1NBmFOD6vnjujxHLPHvj7TuqEUZ6nQy3dxFmjjRp21iF0vjz+pS8hJcFjOt/c7aW6VCsI8yeKPRwDne/urGh+TY17APFKv8Q5TXudrES/vpabFcZouV3v45cZtGAzKSmNEcdCJUKPBTQBWNq+T5/vC7gnULUTTrN5++8cn4BipVBnNdHHRQQRe7u8ywEYVY+pwppMW5kFPTPwDqW4gyDEUBa7aQt3ytVB9FU6avluRAy80XqqLRDJlBkpIXxtBcLg/LIDVu6Pg0tREpOzyfvcMtXXzYWb+cdzO0Uu4Joa7MrC9/Cn8WiYM8p+pT9NwjdMS3dGBAMhbnYOKreayVWQwhsTw/YhvQywsJb610u5oLkRo3BiTHpYddOk1g2A7qf6xKl+Y07zK9lTbVC642PEn/U4CyOYZiUJQL+LXL9nO3qgNF6oYGTFjKhyofD8xW5QGTaPrbS/TtGX3rZetyN8xWvMzQNuYAoNTnBSTBb769Giyvh/jdbnp6D7vtrZioTF6g2BDfqoBH0F8aarxrR+HvoW0rm94sYqAskf3WRbhK8SZ1CMIULkY9OyGPKDsOyOA13Bo9Q3kIbn79ppsHLStOYGmSZKtBPr3jjYUS9Htc8HX/Y+PlpShNLeilkKTcEEi7N1JxWKlu9h4BZZLkTKaYcPDbXGvWEbpulH46HUBzzCOlTEXV8f23r0PE0F6U4Dz6dGd/nkGsrOHMfY294GQsN7rexCHe4zt9Wl0ZkExas3fHpMSUTPq2QQxXaCw2G X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1d544c2-560d-44d3-a76c-08d91ebf22d1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:52.2562 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7Em56agp5msWd4tmMyVrzIbSj/AvYjwE+GgijjYpnlHsfnW9CXRY5IelO9/7A1631nMFlDd/Ehu5J7yLFuRHKwkTiL+i2fJtvzBdneLuWHw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.7.122; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Check subcluster bitmap of the l2 entry for different types of clusters: - for compressed it must be zero - for allocated check consistency of two parts of the bitmap - for unallocated all subclusters should be unallocated (or zero-plain) For unallocated clusters we can safely fix the entry by making it zero-plain. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai --- block/qcow2-refcount.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index f48c5e1b5d..062ec48a15 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1681,6 +1681,7 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, uint64_t coffset; int csize; l2_entry = get_l2_entry(s, l2_table, i); + uint64_t l2_bitmap = get_l2_bitmap(s, l2_table, i); 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; } + if (l2_bitmap) { + fprintf(stderr, "ERROR compressed cluster %d with non-zero " + "subcluster allocation bitmap, entry=0x%" PRIx64 "\n", + i, l2_entry); + res->corruptions++; + break; + } + /* Mark cluster as used */ qcow2_parse_compressed_l2_entry(bs, l2_entry, &coffset, &csize); ret = qcow2_inc_refcounts_imrt( @@ -1727,13 +1736,19 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, { uint64_t offset = l2_entry & L2E_OFFSET_MASK; + if ((l2_bitmap >> 32) & l2_bitmap) { + res->corruptions++; + fprintf(stderr, "ERROR offset=%" PRIx64 ": Allocated " + "cluster has corrupted subcluster allocation bitmap\n", + offset); + } + /* Correct offsets are cluster aligned */ if (offset_into_cluster(s, offset)) { bool contains_data; res->corruptions++; if (has_subclusters(s)) { - uint64_t l2_bitmap = get_l2_bitmap(s, l2_table, i); contains_data = (l2_bitmap & QCOW_L2_BITMAP_ALL_ALLOC); } else { contains_data = !(l2_entry & QCOW_OFLAG_ZERO); @@ -1800,6 +1815,19 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, 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 = fix_l2_entry_by_zero(bs, res, l2_offset, l2_table, i, + active, &metadata_overlap); + if (metadata_overlap) { + return ret; + } + } + } break; default: From patchwork Mon May 24 14:20:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482814 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=QiIGU/v4; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpfhY1YZSz9s24 for ; Tue, 25 May 2021 00:28:29 +1000 (AEST) Received: from localhost ([::1]:41686 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBZD-0005mm-5x for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:28:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40588) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS8-00077b-3P; Mon, 24 May 2021 10:21:08 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS6-0006u5-8q; Mon, 24 May 2021 10:21:07 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cckx18stDAKKWiLUnLNjfwLom+qeG7jEvWuOXDQ8pc0Kimm7Xlb72yrhZ8BLvlbPchi8OZ12xV/3JFdaE1/cDVjNFBjir4sSPpoagyYE2AQ+EDpOpu43SZxXkzhRDuiTAj7vEdx2XshxtRin+H26cZ4ulTi/TIuKXMeSXH4Z4mpyA+wmopxKqyKk395HoMUQplAwq66ZfaJm4EW4SLk7Tk6RzTgC9akGRRevSZv009AF2gwLu8eCYDyQKf7JhfqJDCQOJysAdE453V9KfdK8O4kMbFZBchE1oXM4p9ejOhhO+vIc/FxO4CMKjZSvhsIRmYIRl2T52wvmKewSI3DTXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=M8CJzS2CiAgW/7aayOrTJ2lK8BeAIBaPTwhPjpej5Qw=; b=E8so7m10Uwu7bNZPNeP3nkcadMYgv9tBnQF/CjOsyYsnWp7rCgQuPh7I6kN9DYveGGY+ZeBRB92nx1vHIBQXCle0uwrynsCKaSWXR7krG57tXodG2HUOA8BNlRkzxSHPSpz/LtnloJEmeIgMKb2LZMd0vIFYXz3S6hnQfGDUqGr08XVw5wNeY8/GSn4B/Z5mdYrR4lzaFx5RNopw5xLw3PJaw5wC67kZ0pwQAgiMqEb8A+zd3LeN7oyvVFs11kuetdWPFwI1VBxiLinF50B72DuiX4ZLtNpQs3F4BmgL7kqrbkq42RNPsSXan1DxxXxY7UxkArc1oreMLjaGuvNjGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=M8CJzS2CiAgW/7aayOrTJ2lK8BeAIBaPTwhPjpej5Qw=; b=QiIGU/v4uZnrLn9u6t345IL1ULwgGF0/Um43mjAunYIUqfpH9F70oRmjSXHbK2jCS5F3QAC4uTc30efN+q9CjtYEYlRE0wd32qj25y8KElH7SJgUlVFm/fzpBD4DQ9gQLJoPdpiOxsO13FHJh/7FdCakiqwUMaDiJT0VHRcuLM8= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:53 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:53 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 07/10] qcow2-refcount: check_refcounts_l2(): check reserved bits Date: Mon, 24 May 2021 17:20:28 +0300 Message-Id: <20210524142031.142109-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:52 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 310d4ebd-759b-417b-bb0a-08d91ebf2381 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:53; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 56blYcD44jvG0mxuauiNu7N9h6nYDek3FlF/q3r0AblRlW2sADXkmj/JB4249dH8a1qeqfPE6AoktacIEuy0RmFwflRs2Y3G5vefwBMT9WfcPbel0WIyu2SfRmiK3WT3xyF/U67t+CnegNRXxUSAWsO6QOsUfbikTV3265GM8yxQ03odGB2Pgn+hvY1VYQBUtMOEvX3j4gXuL4WtSdwMayrcVGdqZkVoZKq7LialbosIkxiZSAky7V3n7ufDALqdXZXrVzmUrqk86UswJWoTkXj8tj6bF8v3Wo6aOiPl6954ffAZl1xAEVRX/YeekaxIyf5Ckexl7eP40TfZ+Vcopc6CGbA/Kr6foC8Diy5dk9Kis7GmHRWOqpXtHQ/uuYfa9PIBhylfCNGErRW51fH5h0ohVBJ/ouWES2tchi6iManWz4JHYiHK3oh4ZA9jdOcYiUN6gk/FjGDmzIifakwieAkvorpPzICZONp/X6Bi7DK7LrfezykrTZQpUtOVJtDuYb4jH7SmGkFCgMtkia5hQshixuUMFYJuPHQZIX8tG7dx9+q+H2FOY1OQ5vT2qsGMZCG1h7rrkYaINiAP92hgrU7aHrtUhMWvFhWtT9fMO2JQ+4FM7gStK1camV8bqIR1viIwIg5TZlUFDHBDQCyKVt7e3Z8kApFG4ONVJTLf08XpSTbbU313+C1cTTncR8Lt X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 06jMMzL5AqnWgL2r8PlEu1v6PMn6E3iSnvpXd6M9IwPHC9d+P3L+7/DIXkDvGG0oOa6KJ08QJ6K2c0LiJpbZR6/U1frcgPFnQ0CirdfJC86jKA3WBuwvZQazPYHPJPeMl5vtBxBPFOZYu++mrtPIkxiH79HY2NzVWzNmHXY2EQRPUgSM6Sd9IV68cCjLUlQDEeR4vJogjwFbUcdENELfOR+G2EAjNAIspiror1Lva+XPn6GduF5omQsldBeUFmWvX3KhiOh8GgS0cH5EwTZ3jNv/8zhCz/KR04ZB+rTnZS4AgpxySk5LomsVIK9vZ/KsC6Q2gJVXY7lS2tn97kvvSMv7Z0OZlQUjNyIBDV2DTFGyu44IUI/uhKzi8NqKsLMKvs7IqJoiA//g4pfUnOJKYyrCWLjQ1tAer2X29gW2PsM0fyf/uE7bBbqJdJxjKBMwemRfHjZIY6ArE3BE9JJU3nfc2vMNfgw/hsmA/6cEQE72pB+WL0ozJWh8haKJnwHizKfksmfWfWL/Vef81DMgzfiIp8HrPM+iV2n9ceu4Wg6cl4Davc4u9prUO+/TKWcHhoG+JQK9XeNY/JdBcD7osMvUKrMuPnATkN870d3KcVq58jJnk62j33SqeMqONfMYdrd+TjC+swP56BqePyOG6Cg/CahnhPWfxBvUHMXkKmO5kNkohvFvOmJxu0UHmrZbbp3TYGY5rGhrkIfSG9mrTE7mbs+aVFc9Kpq0ZBxqpkaLnYGXyD//CCZBOSiaavSpcG955FxByH43a0pxUoc32cPp64S10bTq78wsWst4m2ok4lV56ZnyT28kVehLEhdfyfUyQc8/PP6BykAIPkqE0Loy8+rl252wDAeOeMdVl0bIoNssoVk7CmEkCLPExHHcQ3IzUQwC0jlPY3BxnruCrOQvMRDyqwyvNN2eQwzanIzINVr9hBkfhUnnRoAHvxxWjtTSJYkz/9nnWFoaBOYahusqrbUj0webG2wdHRCoPfNs/q2y+y0OV4f0loY8iU0NUf7Sy9Egqrvzmgdy/XOZJgo+76nNsAogQcYAY0sWXk6tJENNhrFFV8XRFy5YlvS0n1HblepXCqkhf4jgaOO2+RQvpb7HTz/ZNIvDtGCNUHQE4WcNbT9qfdp4fhKUq1s4f7NRLFvz3pc3PzCQ3NdABiB6Y8tHhA4G0mlL4miq84dS0hN0RcVjFvPV+6Nu48AfvuQgkTbgK3iEj+RAFlvxTqbxzzC1nHZADGxsOoD55XkBKT87+GcKuPohnPGpzbM9NM0tjy5FiAO40k+szISidJKy9N543PhaFNBFjSMThQrsaliBytVCDv7P0jPtPnfC X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 310d4ebd-759b-417b-bb0a-08d91ebf2381 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:53.4311 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lMvV2V86oyNBQt+NIvY0dlQ0uhDxKUlMte0e47ggnyM0sPxyVgiyQK9FwVGjZXEuQte52U7AE88IUfZulNF8oWSIWd6SKLx4z6z0E+Xz8RI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai Reviewed-by: Hanna Reitz --- 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 { #define L1E_OFFSET_MASK 0x00fffffffffffe00ULL #define L2E_OFFSET_MASK 0x00fffffffffffe00ULL +#define L2E_STD_RESERVED_MASK 0x3f000000000001feULL #define REFT_OFFSET_MASK 0xfffffffffffffe00ULL diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 062ec48a15..b8fd6337d5 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1682,8 +1682,18 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, int csize; l2_entry = get_l2_entry(s, l2_table, i); uint64_t l2_bitmap = get_l2_bitmap(s, l2_table, i); + QCow2ClusterType type = qcow2_get_cluster_type(bs, l2_entry); - switch (qcow2_get_cluster_type(bs, l2_entry)) { + if (type != 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 set: " + "%" PRIx64 "\n", l2_entry); + res->corruptions++; + } + } + + switch (type) { case QCOW2_CLUSTER_COMPRESSED: /* Compressed clusters don't have QCOW_OFLAG_COPIED */ if (l2_entry & QCOW_OFLAG_COPIED) { From patchwork Mon May 24 14:20:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482816 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=QrpKdTNL; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpflT1Vnwz9sRK for ; Tue, 25 May 2021 00:31:01 +1000 (AEST) Received: from localhost ([::1]:48418 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBbe-00023e-Oe for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:30:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40644) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSG-0007dv-45; Mon, 24 May 2021 10:21:16 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSE-0006u5-1U; Mon, 24 May 2021 10:21:15 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i19HjFReXq84XF/Q6Nz5kUh9CRsCq09/qX69PdwRdzUUlM1cLU1CXbpBXlIi7fz4+ERyblmz+0mClz041Tp4dQC/6iT4g0dzNzknoiimkusbRgs+XQrQFEn5X7zAg58ZhZ0mCfDuzNX+hl/nSoIDsCwylBZTJmOTf6kQS7eCYt+WgIU2KV+nCDskuWlau+MWYsIV0wJULQCMsjMoOFx622aUxAp/j7Y3EeziMGYfihLsuKeLZwgfwS7SuxKyzXoP2ys2etWBlh2dWEbl+Axm3p+REn6zyiei8kMTrPRR9DBEv/kWVqMnFlmPOfEwuA4wbzEUHzdezLzGXZAToM4cFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tKwLwj+lsTnh+2NuXdem26jUII13JuOyHC0xehNhrqA=; b=OhOIg3OvMVnlYG3tAs6sIaex/PDVkPHGYMOYbwGDibjVNcDmuNUQj9t6XAIaxNgrXoEahPphNU0Duljfd4y+NId/w+3f+j5rPZVMUXt3T6+C9AEs2YSkrHLjmVwo7+qaprfTCTr1Tk6UdjYDvENrW1Qs3Z7Q+05Req006ZEYo7x9vNDcqqOZVb3NppgjqIUwbq/b69GQHY8qE01WCpIWDvgvgo1PaiEskywBC+hOyNfyUaWJ1WIMYIqudftDnqyQk2o2lslBcPXhaMYCITqroLPRYX91WQyNziSPD1tlN2u3DT0uwrOQG9IdrHEn8113funospr7Nnkm1e7deGCLzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tKwLwj+lsTnh+2NuXdem26jUII13JuOyHC0xehNhrqA=; b=QrpKdTNLy9qgPxU4PotgutL1EChgMQvcrp0/6CRn2KiA0AbyryXAmfz2BPTa0vDN5e3+PYW1isfoTErpzikpF1rERvJ+AXz4V4SgISR2rxFGp5NyGCa0CFBCMDC8r/+nHrE5ixxmD2dWtAHZ+k96JuH8W4I4ZCI1eVWc1EtbZsI= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:54 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:54 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 08/10] qcow2-refcount: improve style of check_refcounts_l1() Date: Mon, 24 May 2021 17:20:29 +0300 Message-Id: <20210524142031.142109-9-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:53 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a7e7959a-e9a4-4876-4347-08d91ebf2432 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:454; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WMx8KGFfHMIu22PrAxs45rIOTl6hbpmm2m6oAmASOE1n1gtgh4H6whUK1mo1rovVf2MkSgeE981SDk2Ruv6bjbyCam2KZqmseNmsrIlE79D/WABKDXsKAiCyYiYmK1JfW0EOtf+MjvzRTz+21R4ZfDP7gSxOztiw3PcogWUaeEmFRUZO/avkTbOx4xkaQHgQhKLbBGoafIfyB2Menm+0lgX/2fNXOtWssZglivvorgAJlOZpf+/asLVV5zA6pUzhwI5ssZ4TtIAjAKJpCZb20icNO05Krai72VVGJtAJC8l3KvUk1pxsSI6hIXHsP+uTSY+NeHc1PVAokAYcB6keAuih10bHP9d0jdLrp9RsC65eAk/pP5W51FqJdAFpSmwaKXI4vwRe50CuGOJqPf5jwtIIh4wgF+JHFCi66yMGqEFLd+/6QssMb1qdMlMvHsn0iJRV+asVQwgoZLYe+YtG1ejWzkSkfFX9wY+qEZE1XRlAsogibaSCgYaIFDvovFI5Zh74W/3zgRmT0T/MF1WflAbZk8g/5/XMNklnyPAAZ4kzNSIaj0R4KVJQZZNRQ6xmFD/ujcgj/QN6DBycXt9cBlTDjSm76HMl5knSAEFFXp9F7FVd4qabeG+QkW9HxRkgky1X0vLM3TNj4tWLw6UdZDBdHek1OsQqdRrZZIIKD6kZ8XJVqE6Aby5EvzutsFBc X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: RI4lmyHd6gaI95aj3EC0DsKPlVE6as8QTnZSu6PGRQutoGN50QYZPhsofU5wYnEMGCt5+AKKnSMXZ3bu0IkafCf3EpASmoHDL9VU3slOYhXxhvV889ABhrqYSS0LxA0/uC6FfkChlQoN5gjt/PPii6g7bYn+gIhvfzx2ekp1agK5vDaRrDqYOUvwJnIJH3CIViaYpyCpo5pi5uDzqwFfWBLIAEoiC4Q5JNJEjZvYwxFIEIYWah/FGX1FoZtgWjw9pMfcCMXbnwEDwnti9ayZjQmT0FhRTlKwuK6U13wi0ovd/WEpCJvdkPvQ6Wv3+88ehvrq+cW9MOEtAxD20GlmCB8oSaa3B4a3/XJiX8K2r2eKXD6riJ+qrVt0eibgXFFWBXRMouKdDJl89l9LXYVgPXARoHCnAIpr99aVAUgPgMD2QGAAg2Gxm/OA/KX8m8D4EEIihn3+BLY5yW32mi9d73t7ZFffWZ718rger1QqfNN1UGMM+xXmtmf5ntwasCLbbaLSkAaADulb6wGaKAVySfWT4MuMUNR17RMA+fVg3tYUTmAEC6W6A2st7tuSIiBQbd+9lsuJcvX14H3cWrgirHn+EK5EIDw4WG62zjorGzKSCSQ28av7b7g81pxZw4U5X/pxcwd5x+kt2eGRnK4yqtw+2Z/7NT2K/MdxLBVq8BmDGh3xh1o7EOmrE374aNI0dzZ3Jkct4yDR22bEF93oJbR0cEBvIA+1EIibHZurNnriTv3ZTj0fRmzKJf6ACBGX/OhtQzH3LOX+v7N2bA0OHKY+n2VcA3VzqHZZl1EepC5SPnTHRYG1q+6RYaDEDHggIOr1VeJAK7o+ZvWr0/Y824zK5+vNrQMhws7QLz+Z23LQ4EQKGNyeUsHSmUwifqo4xGez+/ol3nkAsuKEB4rbiPks62MHOQXizUKRbh12H26prc3ymTOacTM9x6vA7qpiWQLhZVRSaT4l3593AdXRacxV9lUMWgxID9GTMW/8Q5oNavdo+7zwruMHpVVj2gu2b0Qo3GKFKDMB9Oh8a22K5ObxNdRKTAO2Ri0yHa0KDZJBZaXI5gjdpWo9NSVxR0kxMuH6UCDEtr3SsBjZ3Yh0zUao+2yMiC8ffSEdxtl/zF55/Wj8ITxL+skLy8/pNgvGkaKSu3ll3KmamTiH5jttTgg7fGimC8dFDBmQOW6PPZoyGguT9kJ6A4hxQDS57amSiRyG/UsyjDnaJe1VkrMc6KxpKfozauhyktZWOFO2XB1ewb5gOif7Y9lyQQ2XqvX6W/zCsfL+WNZHqWKTZTaS/165cRdwgxMh7AIK24ZqKIlmyKRvWlynCp5VJegqpxto X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7e7959a-e9a4-4876-4347-08d91ebf2432 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:54.5999 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JbhRwKjDFHkOjy6Jl97278//Bc6elbgsjPRe9E4zA4fFyxJpqdl0cORi6rtVwuPGthYK6wMRu2wJVoieci/YuJq1beR9IktenfUij14l5dg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" - 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 Reviewed-by: Hanna Reitz --- block/qcow2-refcount.c | 98 +++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index b8fd6337d5..adebb15598 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1864,71 +1864,73 @@ static int check_refcounts_l1(BlockDriverState *bs, int flags, BdrvCheckMode fix, bool active) { BDRVQcow2State *s = bs->opaque; - uint64_t *l1_table = NULL, l2_offset, l1_size2; + size_t l1_size_bytes = l1_size * L1E_SIZE; + g_autofree uint64_t *l1_table = NULL; + uint64_t l2_offset; int i, ret; - l1_size2 = l1_size * L1E_SIZE; + if (!l1_size) { + return 0; + } /* Mark L1 table as used */ ret = qcow2_inc_refcounts_imrt(bs, res, refcount_table, refcount_table_size, - l1_table_offset, l1_size2); + l1_table_offset, l1_size_bytes); if (ret < 0) { - goto fail; + return ret; + } + + l1_table = g_try_malloc(l1_size_bytes); + if (l1_table == NULL) { + res->check_errors++; + return -ENOMEM; } /* Read L1 table entries from disk */ - if (l1_size2 > 0) { - l1_table = g_try_malloc(l1_size2); - if (l1_table == NULL) { - ret = -ENOMEM; - res->check_errors++; - goto fail; - } - ret = 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 = 0;i < l1_size; i++) - be64_to_cpus(&l1_table[i]); + ret = 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 = 0; i < l1_size; i++) { + be64_to_cpus(&l1_table[i]); } /* Do the actual checks */ - for(i = 0; i < l1_size; i++) { - l2_offset = l1_table[i]; - if (l2_offset) { - /* Mark L2 table as used */ - l2_offset &= L1E_OFFSET_MASK; - ret = qcow2_inc_refcounts_imrt(bs, res, - refcount_table, refcount_table_size, - l2_offset, s->cluster_size); - if (ret < 0) { - goto fail; - } + for (i = 0; i < l1_size; i++) { + if (!l1_table[i]) { + continue; + } - /* L2 tables are cluster aligned */ - if (offset_into_cluster(s, l2_offset)) { - fprintf(stderr, "ERROR l2_offset=%" PRIx64 ": Table is not " - "cluster aligned; L1 entry corrupted\n", l2_offset); - res->corruptions++; - } + l2_offset = l1_table[i] & L1E_OFFSET_MASK; - /* Process and check L2 entries */ - ret = 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 = 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=%" PRIx64 ": Table is not " + "cluster aligned; L1 entry corrupted\n", l2_offset); + res->corruptions++; + } + + /* Process and check L2 entries */ + ret = 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; -fail: - g_free(l1_table); - return ret; + return 0; } /* From patchwork Mon May 24 14:20:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482809 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=EaoIRk75; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FpfZb53Gmz9s24 for ; Tue, 25 May 2021 00:23:19 +1000 (AEST) Received: from localhost ([::1]:53924 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBUD-0003Di-O9 for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:23:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40614) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSA-0007IH-Lt; Mon, 24 May 2021 10:21:10 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBS8-0006u5-RT; Mon, 24 May 2021 10:21:10 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L9Muge5O2wm2g3t0AgfAsc7jmOcvboxnAPPbq47OEHihD+QlTcrMJfkchYI4QOxIsy28ssNXJXwhUFUB+j8xCEoUAJ6zT2h8ccsCgc12eUsLrPhjhdj+gv0kb3AXG8lLL3ry6JyRflN2+32wV/owjYIRdTkypSRxrlnDVNbO1WfqltD8OMmyqboLnK/pORSgVINsbuNwClFPie1jjSF8etzDm1cSp7Dwb+OY596lVzmlQ5w0Ns2dV77F3N6/Co4KIbzJKaqFnuhKUydDQ82VTyGAWaZG/+h0WzJaeUVTjMGDCTVo/sYDlwjbTrO2LP1siec24nUwcljY90gpnaH/EA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fb/JbJfFGdqroR2KDGRC0fscvDrKAKAnElwBfhdl57Y=; b=hK8NycbzuraOWprsVbA+fPkQbjZ0Lirr6G5G/LUaDpjDuALun85+6OlQqeqrh3JfChiDGSQ5LzKUZ96VipJ0vlFQhQMFcr1X+kBrLqUnOkrC69wvcSxkUjNT3uNbHfri9VQVa1U0eEBXAWSfx1sHdOSdp9pfHjbjNNCeebY5ScwUDyQxNqVoCMMtF2FE/RC/GHgkb7Nhq0gw/PwqJyduWoY66ZrlrEuXK1xR5o3xGDlQHOMcyl5ZMxsbvSTi9ixVASj0GgHgFVc0vCRIO+OTVPdYGwwgAd39ylViuUzLFbvtWBVrX803vfq41A0RhplJpE2GnAVLC8CgC6LT2fichA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fb/JbJfFGdqroR2KDGRC0fscvDrKAKAnElwBfhdl57Y=; b=EaoIRk752JIqITXMz3G5nsby3WOwveEqN4B8OO79Yglx4XU0WnYIZEouIgO10vX+1LSll6Gy2rrYZf9okGcZ49R+TuSLzi55WRZ0Qtkb26zXppqQdNK89bIFXQ6ufKllenPAwZIjsDgbtrj5KcVtaioU8kPIdZEEtclaWnDMKxM= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:55 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:55 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 09/10] qcow2-refcount: check_refcounts_l1(): check reserved bits Date: Mon, 24 May 2021 17:20:30 +0300 Message-Id: <20210524142031.142109-10-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:54 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 55e62b1b-a387-40db-c513-08d91ebf24e4 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:257; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5BZrImfXHpoVLuihpRYnIbM4ERII7lxhNvsc6CS19WRbcuoKCoW/wGpQPK7fII1O8y3t8ITawupibc3RKsa9xo3YBGXOTmXSLqrqvOg2SVwt842gxcoNDftbip+lg/pzluUvXmMv8Go7QRBZYWONdARKtn8UmZhmQoIIsENv3CDdvu4ov8hVospAyo5Lw41up50105xFPtlRiiKWVBxIg7vwdILKc/g9Al4T5ZR/PoCMa2clY4HN4VXdy05YGGVvyay1/U6uStYlVfiEW6rEe2i+NUvSX8ws4AnKZBIAaWGPHKwRdKwOLyYbitThknJABerf+J7ibwvfZpSZSpU6chXxMVWQe9eN9SGY13lXyVAA9vIi61Hf3LuuU5yP5xcStauO7ITGlVytgn77oZ2W/dM9s2Sxw6Le1enDJpD0rRSjHjbXpVSOcsjyaGCqxXJE2SdZiR5opZp8aY4IoRvrWA/16LUzRc2xPNaa+7pFEenTzJjCpxUgSzjrXRl2SBo5oJCRRqO10BdGsJf6NnKrFlQiXqZ68FwYEbTQFWsebY8zCFFbLZqEtgNm5ll9Gr5cL/48B65a5/K6RJzQ2E5BnTVMrtEtSYPzfvMeVm2aO4FtKUrs3We98R0lTEwwZaMPK8Hm/0WPU5gC4k33lyt+aBT8CokyqRLh/Y/G7bZvSq5WJmlKj5BHu5WdglV58bKu X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: RQhuQAjYBuQSwxPOyiEmwjY4e10xoxRbC0vW7WAZj0wuK74jHn7h1PeAuw7h/EQq9muBoUcj9JNMiLAEZG1t8tbLkLBzDpukj92ezILNNNgd/CVd1ecDAu5aqfh1S2gkEdePO7Ls5Z3lDOtgwClfjrwzoFDcQh7EZXALpQUW+lnIUjvcJngUR7KyGtia7bxUedkI82VSC/BJnGJ8yTSRRLv4loa84qDFdjKfNR50R18oC0U3iNwmHtrkVc2qMq6a5OQUuC9bLw3GsQEdLcnYcTta0qFQQV8m0XFbCawaLHM0tcP9hdd3f3TLbqs9WEp2mTuASG9vLHEfryqKgEm2rSoGnDorUQswKHGaJIlMyPidzLC7mCTEbvTZCa9YlmClvZJswo5wi0BJpG/sI93M3aad/LLwwbgRVpo5kjG/8nMw6h7+jc5zYammPFFPV5fzfguvIhstUH8ex070pHbBl4K239wheFhWklhe1swiFqHq7xqic3CfOBfORyPL4JRk8BZ7+xaLt+vRK848F/FPpQ5O6OAvaV5vBT6ghdlixIH0b0MBOcukMcm59IBhzUrNXCDpVYXYrNQXRSGqSVzL8TdlyA5miB4vTlx+NmxqxjfiEkz3/Ed1YZU5pwb6ITQ6ZYyJc1vGCwOME3jpSxkxqjtb5easDDMPy7qo/YBw5MWUypgKUAY4VJsSO21xVTQf7fqtHO/W/L0PQ/hjt0Oj+kNc1BL31D8spEECuzSVwJP9aoTTnbkO856HQWyhnmKIh7qgbElLt2Bd0+2vZkNxMRVVKbZM0SbEDuhrBUwF/YViHjYLQh+2tyUrl9PYuCV4+r7vK1pz0pkinfeMel04Uov1WbEw7f13s5tttwIywv/okcDCf/OsoheYEQFIQajNLfabq4jp92QfxJcQWZF3ZggqvHKEcsICKyQHEElc6frpVeFwo8ksFuw6A8iF866voM0rce1OS1DOCV1z/0uyIF9L5KxXPyQxwweLn8F+T6tqfHMvSfn8TTPnRFvc6KZPylaH7InK1xpJmceoCox22ZRDcK+qN3+7osR+Ez+Z1VPTiWj9TIkz0L/DP1ZGXAHc5aNcYx6g/SyZM0tI+zHnoAaG0iXJS5goZBIkGKdD0g/RAEnrEzUFkoFGLTY9pKT5zY4nhn+CgW7IT1hs5RyrUM7hIsRQfuYB9bgk9iU2kEVYPHfrKaCKrZAGTKkdQljTxH6VpyiCUAyJYbDkxB4Qi5RCXJbt4E56G4BwnVld/muSXWqvkUA6TDx4b5x9fnaBJo0WkMnvyG3AE0oAcLWotuGpmemo1Vmj/mjWJEwa07+ksptCO8nITfzOtvkTS7E2 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55e62b1b-a387-40db-c513-08d91ebf24e4 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:55.7778 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CzCIfT+w/LUqHnFH9859TvGgsKQdqZWdDjWMfO+xuIVprL2CaEI434GIk0gyU2PyBaSvClq4/EU1mTgL3p6eGQ308fpttcTy9z8Fkbq4ryQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai Reviewed-by: Hanna Reitz --- 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) #define L1E_OFFSET_MASK 0x00fffffffffffe00ULL +#define L1E_RESERVED_MASK 0x7f000000000001ffULL #define L2E_OFFSET_MASK 0x00fffffffffffe00ULL #define L2E_STD_RESERVED_MASK 0x3f000000000001feULL diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index adebb15598..5903e058b9 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1904,6 +1904,12 @@ static int check_refcounts_l1(BlockDriverState *bs, continue; } + if (l1_table[i] & L1E_RESERVED_MASK) { + fprintf(stderr, "ERROR found L1 entry with reserved bits set: " + "%" PRIx64 "\n", l1_table[i]); + res->corruptions++; + } + l2_offset = l1_table[i] & L1E_OFFSET_MASK; /* Mark L2 table as used */ From patchwork Mon May 24 14:20:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 1482815 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=bA1AynA0; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Fpfhy0hyrz9sRK for ; Tue, 25 May 2021 00:28:50 +1000 (AEST) Received: from localhost ([::1]:43238 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llBZY-0006tQ-3n for incoming@patchwork.ozlabs.org; Mon, 24 May 2021 10:28:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSD-0007Sk-AT; Mon, 24 May 2021 10:21:13 -0400 Received: from mail-eopbgr50103.outbound.protection.outlook.com ([40.107.5.103]:9605 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1llBSB-0006u5-EH; Mon, 24 May 2021 10:21:12 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R2muKFDzaObgALBu/1QrXRwnOGE+suMEF7RAFZclAeu1Ya+HOqeQR/5kbhJSbOfSawMAs0QsqM9zd89nd9wjBxePW+FHKIp5GheJ4bvL68MLYA88tGkANjhZ9TXaey4V6A+YNviNShWrRMv8Mh1MHsVyzyAYY08jcUJICTCT8cg9vnF0QW06yT7q+ZLppzf7YXXp2yK1jp/8FrBg66ES/Az8HzRp69S8Dli8RhRfrb2/Z9CGb2I8UaSKxg9Uce7KRMfd34Igr3RSMWCr+73aHp5qzEJhNT8f+VEP9niREWx6uW0vnr2Dm39ggXAH1f9IWElPKDGELPH+KADj8M6Jaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vGIeXweqjWBYfTbxtvWgxLwtm66/7rHUR02FO5Hkh78=; b=csh9xX5JfzkTUdVt5Dy7V3biRN3i+sydDEePTyNVAwllOKdOSiTTV14OFPDK0ZRfoW9SP4ouS4pbzFFbC7rxxf/nfV2KlwO4+wBS2HV9E06GMFCb1lffwGlKnFS+RJqmStTTVsXHl5bVbubvKYNCHZx6vrUML+vV+pW75mjeCLjEXjHGIE0mBOMxIu6mD7sG5+GetxmyBz3inTzg8h9c2ZfohSoCTtWqDh8fwaPhwYHuRDi9WNnZEB5dze4H3R1Kqsafxh3GdB8mOp7bfTLQ6ueqOZtS318d6503nqsXZ45delC9vZsUdt/Sy785uvdkpyru/TcCLW9tyy8qQHv0hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vGIeXweqjWBYfTbxtvWgxLwtm66/7rHUR02FO5Hkh78=; b=bA1AynA0oqBLDSR1ijG+ZFUwIFeM4Egdo4SfYtbBhO7WMDO7BILKDuldBHRUEoFh5LcR2jt0ekbyUheRqas5ICnrLb9ivrznJd54m5BnfCFCzxgyRyPBedoGOrOIRgR/hFY8QGlx4QgW4KIatiuqfDa5TsbMjFSnyQSh1naiBAE= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AM6PR08MB4165.eurprd08.prod.outlook.com (2603:10a6:20b:a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.27; Mon, 24 May 2021 14:20:56 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::b403:c1a9:6bb7:133%8]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:20:56 +0000 From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, ktkhai@virtuozzo.com, eblake@redhat.com, berto@igalia.com Subject: [PATCH v3 10/10] qcow2-refcount: check_refblocks(): add separate message for reserved Date: Mon, 24 May 2021 17:20:31 +0300 Message-Id: <20210524142031.142109-11-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210524142031.142109-1-vsementsov@virtuozzo.com> References: <20210524142031.142109-1-vsementsov@virtuozzo.com> X-Originating-IP: [185.215.60.195] X-ClientProxiedBy: HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (185.215.60.195) by HE1PR09CA0063.eurprd09.prod.outlook.com (2603:10a6:7:3c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:20:55 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d6414ef-a517-4390-163d-08d91ebf2594 X-MS-TrafficTypeDiagnostic: AM6PR08MB4165: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:198; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VT/1lA5fA3+PaKc0NF/X9nSPYGd9QUL8Y+SGT0Wyr2nMbJKus2DgDepFpwZG3z+9ab96ejGWljLrl8T8F6EQy24vxc3yB7lv9x59NHivYE9qP5AY3qS26PHulXZ9XBR9AtakAKfH8FySXO0+CVmem2wQ2UN5gY1gosYJaw0MtRmZUfXcmcZ1OGaFg8UNjt9SWAdbmZJpY7oPWuvUAygpDAHVfP82MZzbIp5M5NZJBpLrAHh3+vz/2d1J5QuEJXF6IHFNiyYyuEoAwyveHbpj5RIHWVqfWxeYg3TLrKIK8kTD729AhOdbUZd62Yqtb8Vf5r+80KzyLHAsgFlK+lsPLXSQfuLs+N4ebUES4KvYcUtnZ9ncA5cvxiVqWdYWPGT4nfjrVq42uUzihK7fj0ZMU4gG+Jr9RhGN3UBlCYlkDKaeCt2Hhf6jhZITWOY1SWx2Iqs1Fgc+zjr+5cZUeKQiflMLhdh7NARbLZNlULyiv+jcX3TgKPakCTcrcMwNL2zYZjoZjlLZ2fJ6PI49diI/2NzDtyeeDHCZCzLF3V+Qo0b9H7rgNpJ5aKvyKMpwUB4YdOgN+9dFxfcjfCyeAGaAonnl/yJHi6VPS1Ap07aA/vu6DQJL7bsvpvLXhIQRFthwdgFjqjF6GbznnjMjk363Iss6fdNCoRiCaj72vOlwtLpmY026DY9Z20jtidOawqdS X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39840400004)(366004)(396003)(6486002)(52116002)(186003)(36756003)(478600001)(2616005)(956004)(26005)(8936002)(316002)(83380400001)(2906002)(6512007)(16526019)(8676002)(6916009)(66556008)(66476007)(19627235002)(4326008)(66946007)(38100700002)(38350700002)(5660300002)(86362001)(1076003)(6666004)(6506007)(69590400013); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: 5vQU0RCpfh2cEC5yX823SLIUsUqF/5nswroiS6ReWlICIlTYQPxtBEVGaG/7oMbkdzeb+dwbeTgL6zsFot4cxKMMq4W0172zI6aOLoYpTnR2kwOhTlS1mDy23bv6HV1CSOOeyDX0LA4CqlQM0edt4A71YvnHR2wuMjOpjF9w/K8XkVIwQpbfUsrJo4IznwoViWkUG6WVqBVqMaPtFVLEg+DDRu4351sNcC0C7d44z5SocXSPVdNOoyfLnKwbYgO4CvgK4X4Bk6IjdfLqrlPTYGDLm9XaNJ43Fut9DkZVBZnKKIai0lgNRfKhTpKWUDf1Cu96JqaLJgfbs6D3Cl3ryL7uTYiDG9Gn01sLSWOGxPaGp/aKAOO7OxH5FmcNZ7K+NgG58gWbczNhg1xeB6TRfgP2GsUQK+/4SHkydtqW5YxPPcN5exBECUVSoSA/FN/L3ienHTBprs2JFNvGVJV8zp88s+9rFYmM/Nn4yIljYt9+2qjb6d6E97bCve71+krx2RyR3/O5c+wg7LJghidxQScNiVAqsZAHkcWkKoJgEPSW3IRr0LIQYw92e8V6upxzYVcF9PjuQj2P1jeJIOaMK7prsTeUxOUP4jUftDBQu3PBXHU2ATM+XrV5Iak00ag6e5jQ80LVUsu2Cpg09cz+vRlQLHrmJGV0rk+RPjeFV4kQkEpeaFY0hkkk9dyUFT0VnoRRFwaegE4MhbuqxWBZhjHT4bxnXyxw6zEFPCuFhYDkfepJNeISHsYdKCx8CrMR8AypCBrsm4C36nIVBOASa7khBwfVsdrdZFnDkafybhkZKWK6aoxWAZ10iFimk7NGkTl0A81ZC/QPsa/g2m3OiwRmSx3bsJ4QNqM9Hn8GWNkKC4edfzOZ5OjqUKgaYmgTxQCuh1kFAI9ogfsluyaOKv2I/g8nF0aYUyMXDFZdl7XlZzKBa5No8mnjhKiNzUjkaiYIUiASRg1O0qhqUTgtHEHQmWdRysDLZxlQyc9kpBCG2DBHyW0IpYeR7tlNBLdVm5soeIwdIeA0aVetllhKsnkWSJjcyqhcD+QLtgjEM8dtSUZEsORkjtztI1jzLCf7/Cfc0AGMrUpp1KRuQ0pCqvqcozh2dw1yVn/LaYPrPbvGU9Een5v54BARsLcRF/GEbxKoU79FGprq7log/AtgEZf8HLfMCi/a2MWl38e9DbeMd2+KX9yx/+7ewZYr9aCgB3h5sAstH9IDjeghjsA37DSdrKTgJXeQZDL13JqCkPc85iw9f9NTLh0Pri95Cif/ihF7/s3BqwJvHa/5pnDtLxqyw/NYumGmafnbkHa0VhyH7HsyaoQwTf7Em944Od6F X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d6414ef-a517-4390-163d-08d91ebf2594 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:20:56.8859 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xGSBAiaSZryId69TEyxCi3YKzt/LLVJvPg8OVxlLUW2+/uBpqGbTR+weP3nNtayiqCBxizU3Y3l7khS8dyg3vY9W3975X6oZ7iwGm0iOico= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4165 Received-SPF: pass client-ip=40.107.5.103; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Split checking for reserved bits out of aligned offset check. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake Tested-by: Kirill Tkhai Reviewed-by: Hanna Reitz --- 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 #define REFT_OFFSET_MASK 0xfffffffffffffe00ULL +#define REFT_RESERVED_MASK 0x1ffULL #define INV_OFFSET (-1ULL) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 5903e058b9..57311c5610 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -2091,9 +2091,17 @@ static int check_refblocks(BlockDriverState *bs, BdrvCheckResult *res, for(i = 0; i < s->refcount_table_size; i++) { uint64_t offset, cluster; - offset = s->refcount_table[i]; + offset = s->refcount_table[i] & REFT_OFFSET_MASK; cluster = offset >> s->cluster_bits; + if (s->refcount_table[i] & REFT_RESERVED_MASK) { + fprintf(stderr, "ERROR refcount table entry %" PRId64 " has " + "reserved bits set\n", i); + res->corruptions++; + *rebuild = true; + continue; + } + /* Refcount blocks are cluster aligned */ if (offset_into_cluster(s, offset)) { fprintf(stderr, "ERROR refcount block %" PRId64 " is not "