From nobody Wed Apr 16 04:32:51 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.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 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499790345462192.37243861984462; Tue, 11 Jul 2017 09:25:45 -0700 (PDT) Received: from localhost ([::1]:47405 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUxyo-0005Ge-PF for importer@patchew.org; Tue, 11 Jul 2017 12:25:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45422) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUxk5-0008J0-Cl for qemu-devel@nongnu.org; Tue, 11 Jul 2017 12:10:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUxk4-0006Cd-9s for qemu-devel@nongnu.org; Tue, 11 Jul 2017 12:10:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53959) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUxk1-0006BE-FE; Tue, 11 Jul 2017 12:10:25 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4FE2D7C849; Tue, 11 Jul 2017 16:10:24 +0000 (UTC) Received: from localhost (ovpn-204-123.brq.redhat.com [10.40.204.123]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0DB5F17CFD; Tue, 11 Jul 2017 16:10:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4FE2D7C849 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=mreitz@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 4FE2D7C849 From: Max Reitz To: qemu-block@nongnu.org Date: Tue, 11 Jul 2017 18:07:18 +0200 Message-Id: <20170711160814.20941-30-mreitz@redhat.com> In-Reply-To: <20170711160814.20941-1-mreitz@redhat.com> References: <20170711160814.20941-1-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 11 Jul 2017 16:10:24 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 29/85] qcow2-refcount: rename inc_refcounts() and make it public 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: qemu-devel@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Vladimir Sementsov-Ogievskiy This is needed for the following patch, which will introduce refcounts checking for qcow2 bitmaps. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Max Reitz Reviewed-by: John Snow Message-id: 20170628120530.31251-8-vsementsov@virtuozzo.com [mreitz: s/inc_refcounts/qcow2_inc_refcounts_imrt/ in one more (new) place] Signed-off-by: Max Reitz --- block/qcow2.h | 4 ++++ block/qcow2-refcount.c | 59 ++++++++++++++++++++++++++--------------------= ---- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/block/qcow2.h b/block/qcow2.h index 84c9853..a272a39 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -544,6 +544,10 @@ int qcow2_check_metadata_overlap(BlockDriverState *bs,= int ign, int64_t offset, int64_t size); int qcow2_pre_write_overlap_check(BlockDriverState *bs, int ign, int64_t o= ffset, int64_t size); +int qcow2_inc_refcounts_imrt(BlockDriverState *bs, BdrvCheckResult *res, + void **refcount_table, + int64_t *refcount_table_size, + int64_t offset, int64_t size); =20 int qcow2_change_refcount_order(BlockDriverState *bs, int refcount_order, BlockDriverAmendStatusCB *status_cb, diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 81c22e6..8add3d5 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1323,11 +1323,10 @@ static int realloc_refcount_array(BDRVQcow2State *s= , void **array, * * Modifies the number of errors in res. */ -static int inc_refcounts(BlockDriverState *bs, - BdrvCheckResult *res, - void **refcount_table, - int64_t *refcount_table_size, - int64_t offset, int64_t size) +int qcow2_inc_refcounts_imrt(BlockDriverState *bs, BdrvCheckResult *res, + void **refcount_table, + int64_t *refcount_table_size, + int64_t offset, int64_t size) { BDRVQcow2State *s =3D bs->opaque; uint64_t start, last, cluster_offset, k, refcount; @@ -1420,8 +1419,9 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, nb_csectors =3D ((l2_entry >> s->csize_shift) & s->csize_mask) + 1; l2_entry &=3D s->cluster_offset_mask; - ret =3D inc_refcounts(bs, res, refcount_table, refcount_table_= size, - l2_entry & ~511, nb_csectors * 512); + ret =3D qcow2_inc_refcounts_imrt(bs, res, + refcount_table, refcount_table_= size, + l2_entry & ~511, nb_csectors * = 512); if (ret < 0) { goto fail; } @@ -1454,8 +1454,9 @@ static int check_refcounts_l2(BlockDriverState *bs, B= drvCheckResult *res, } =20 /* Mark cluster as used */ - ret =3D inc_refcounts(bs, res, refcount_table, refcount_table_= size, - offset, s->cluster_size); + ret =3D qcow2_inc_refcounts_imrt(bs, res, + refcount_table, refcount_table_= size, + offset, s->cluster_size); if (ret < 0) { goto fail; } @@ -1508,8 +1509,8 @@ static int check_refcounts_l1(BlockDriverState *bs, l1_size2 =3D l1_size * sizeof(uint64_t); =20 /* Mark L1 table as used */ - ret =3D inc_refcounts(bs, res, refcount_table, refcount_table_size, - l1_table_offset, l1_size2); + ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, refcount_tab= le_size, + l1_table_offset, l1_size2); if (ret < 0) { goto fail; } @@ -1538,8 +1539,9 @@ static int check_refcounts_l1(BlockDriverState *bs, if (l2_offset) { /* Mark L2 table as used */ l2_offset &=3D L1E_OFFSET_MASK; - ret =3D inc_refcounts(bs, res, refcount_table, refcount_table_= size, - l2_offset, s->cluster_size); + ret =3D qcow2_inc_refcounts_imrt(bs, res, + refcount_table, refcount_table_= size, + l2_offset, s->cluster_size); if (ret < 0) { goto fail; } @@ -1757,14 +1759,15 @@ static int check_refblocks(BlockDriverState *bs, Bd= rvCheckResult *res, } =20 res->corruptions_fixed++; - ret =3D inc_refcounts(bs, res, refcount_table, nb_clusters, - offset, s->cluster_size); + ret =3D qcow2_inc_refcounts_imrt(bs, res, + refcount_table, nb_clusters, + offset, s->cluster_size); if (ret < 0) { return ret; } /* No need to check whether the refcount is now greater th= an 1: * This area was just allocated and zeroed, so it can only= be - * exactly 1 after inc_refcounts() */ + * exactly 1 after qcow2_inc_refcounts_imrt() */ continue; =20 resize_fail: @@ -1779,8 +1782,8 @@ resize_fail: } =20 if (offset !=3D 0) { - ret =3D inc_refcounts(bs, res, refcount_table, nb_clusters, - offset, s->cluster_size); + ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, nb_c= lusters, + offset, s->cluster_size); if (ret < 0) { return ret; } @@ -1820,8 +1823,8 @@ static int calculate_refcounts(BlockDriverState *bs, = BdrvCheckResult *res, } =20 /* header */ - ret =3D inc_refcounts(bs, res, refcount_table, nb_clusters, - 0, s->cluster_size); + ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, nb_clusters, + 0, s->cluster_size); if (ret < 0) { return ret; } @@ -1842,25 +1845,25 @@ static int calculate_refcounts(BlockDriverState *bs= , BdrvCheckResult *res, return ret; } } - ret =3D inc_refcounts(bs, res, refcount_table, nb_clusters, - s->snapshots_offset, s->snapshots_size); + ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, nb_clusters, + s->snapshots_offset, s->snapshots_size); if (ret < 0) { return ret; } =20 /* refcount data */ - ret =3D inc_refcounts(bs, res, refcount_table, nb_clusters, - s->refcount_table_offset, - s->refcount_table_size * sizeof(uint64_t)); + ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, nb_clusters, + s->refcount_table_offset, + s->refcount_table_size * sizeof(uint64_= t)); if (ret < 0) { return ret; } =20 /* encryption */ if (s->crypto_header.length) { - ret =3D inc_refcounts(bs, res, refcount_table, nb_clusters, - s->crypto_header.offset, - s->crypto_header.length); + ret =3D qcow2_inc_refcounts_imrt(bs, res, refcount_table, nb_clust= ers, + s->crypto_header.offset, + s->crypto_header.length); if (ret < 0) { return ret; } --=20 2.9.4