From nobody Fri Nov 7 02:11:44 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155127577384975.25220365635596; Wed, 27 Feb 2019 05:56:13 -0800 (PST) Received: from localhost ([127.0.0.1]:44194 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gyzgu-0007BX-MH for importer@patchew.org; Wed, 27 Feb 2019 08:56:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gyzUt-00057B-Nm for qemu-devel@nongnu.org; Wed, 27 Feb 2019 08:43:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gyzIk-0003r5-1P for qemu-devel@nongnu.org; Wed, 27 Feb 2019 08:31:10 -0500 Received: from relay.sw.ru ([185.231.240.75]:33468) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gyzIj-0003mR-N9; Wed, 27 Feb 2019 08:31:09 -0500 Received: from [10.28.8.145] (helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.91) (envelope-from ) id 1gyz2f-0004Qy-Na; Wed, 27 Feb 2019 16:14:33 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Wed, 27 Feb 2019 16:14:33 +0300 Message-Id: <20190227131433.197063-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20190227131433.197063-1-vsementsov@virtuozzo.com> References: <20190227131433.197063-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH v5 5/5] qcow2-refcount: don't mask corruptions under internal errors X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, den@virtuozzo.com, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" No reasons for not reporting found corruptions as corruptions in case of some internal errors, especially in case of just failed to fix l2 entry (and in this case, missed corruptions may influence comparing logic, when we calculate difference between corruptions fields of two results) Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Max Reitz --- block/qcow2-refcount.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 35a9d943f2..55dad70a2a 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1643,6 +1643,8 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, =20 /* Correct offsets are cluster aligned */ if (offset_into_cluster(s, offset)) { + res->corruptions++; + if (qcow2_get_cluster_type(l2_entry) =3D=3D QCOW2_CLUSTER_ZERO_ALLOC) { @@ -1678,18 +1680,16 @@ static int check_refcounts_l2(BlockDriverState *bs,= BdrvCheckResult *res, /* 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) */ continue; } - } else { - res->corruptions++; } } else { fprintf(stderr, "ERROR offset=3D%" PRIx64 ": Data clus= ter is " "not properly aligned; L2 entry corrupted.\n", off= set); - res->corruptions++; } } =20 @@ -1858,6 +1858,7 @@ static int check_oflag_copied(BlockDriverState *bs, B= drvCheckResult *res, continue; } if ((refcount =3D=3D 1) !=3D ((l1_entry & QCOW_OFLAG_COPIED) !=3D = 0)) { + res->corruptions++; fprintf(stderr, "%s OFLAG_COPIED L2 cluster: l1_index=3D%d " "l1_entry=3D%" PRIx64 " refcount=3D%" PRIu64 "\n", repair ? "Repairing" : "ERROR", i, l1_entry, refcount); @@ -1870,9 +1871,8 @@ static int check_oflag_copied(BlockDriverState *bs, B= drvCheckResult *res, res->check_errors++; goto fail; } + res->corruptions--; res->corruptions_fixed++; - } else { - res->corruptions++; } } =20 @@ -1900,6 +1900,7 @@ static int check_oflag_copied(BlockDriverState *bs, B= drvCheckResult *res, continue; } if ((refcount =3D=3D 1) !=3D ((l2_entry & QCOW_OFLAG_COPIE= D) !=3D 0)) { + res->corruptions++; fprintf(stderr, "%s OFLAG_COPIED data cluster: " "l2_entry=3D%" PRIx64 " refcount=3D%" PRIu64 "= \n", repair ? "Repairing" : "ERROR", l2_entry, refc= ount); @@ -1908,8 +1909,6 @@ static int check_oflag_copied(BlockDriverState *bs, B= drvCheckResult *res, ? l2_entry | QCOW_OFLAG_COPIED : l2_entry & ~QCOW_OFLAG_COPIED); l2_dirty++; - } else { - res->corruptions++; } } } @@ -1933,6 +1932,7 @@ static int check_oflag_copied(BlockDriverState *bs, B= drvCheckResult *res, res->check_errors++; goto fail; } + res->corruptions -=3D l2_dirty; res->corruptions_fixed +=3D l2_dirty; } } @@ -1971,6 +1971,7 @@ static int check_refblocks(BlockDriverState *bs, Bdrv= CheckResult *res, } =20 if (cluster >=3D *nb_clusters) { + res->corruptions++; fprintf(stderr, "%s refcount block %" PRId64 " is outside imag= e\n", fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i); =20 @@ -2010,6 +2011,7 @@ static int check_refblocks(BlockDriverState *bs, Bdrv= CheckResult *res, goto resize_fail; } =20 + res->corruptions--; res->corruptions_fixed++; ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, nb_clusters, @@ -2023,12 +2025,9 @@ static int check_refblocks(BlockDriverState *bs, Bdr= vCheckResult *res, continue; =20 resize_fail: - res->corruptions++; *rebuild =3D true; fprintf(stderr, "ERROR could not resize image: %s\n", strerror(-ret)); - } else { - res->corruptions++; } continue; } --=20 2.18.0