From nobody Wed May 1 22:22:49 2024 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; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1518565130159264.70210494518744; Tue, 13 Feb 2018 15:38:50 -0800 (PST) Received: from localhost ([::1]:34552 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elk9x-0002Zy-4W for importer@patchew.org; Tue, 13 Feb 2018 18:38:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elk4v-0006jn-Nn for qemu-devel@nongnu.org; Tue, 13 Feb 2018 18:33:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elk4v-0003Va-0k for qemu-devel@nongnu.org; Tue, 13 Feb 2018 18:33:37 -0500 Received: from mx1.redhat.com ([209.132.183.28]:50516) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1elk4t-0003Tr-1n; Tue, 13 Feb 2018 18:33:35 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2F90A13A53; Tue, 13 Feb 2018 23:33:34 +0000 (UTC) Received: from red.redhat.com (ovpn-122-122.rdu2.redhat.com [10.10.122.122]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4E84360BE5; Tue, 13 Feb 2018 23:33:33 +0000 (UTC) From: Eric Blake To: qemu-devel@nongnu.org Date: Tue, 13 Feb 2018 17:33:23 -0600 Message-Id: <20180213233324.5096-2-eblake@redhat.com> In-Reply-To: <20180213233324.5096-1-eblake@redhat.com> References: <20180213233324.5096-1-eblake@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 13 Feb 2018 23:33:34 +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] [PATCH 1/2] qcow2: Prefer 'entries' over 'size' for non-byte values in spec 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: Kevin Wolf , berto@igalia.com, qemu-block@nongnu.org, mreitz@redhat.com 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" We want to limit the use of the term 'size' for only values that count by bytes. Renaming fields in the spec does not invalidate any existing implementation, but may make future implementations easier to write. A reasonable followup would be to rename internal qemu code that operates on qcow2 images to also use the distinction between size and entries in variable names. Signed-off-by: Eric Blake --- docs/interop/qcow2.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/interop/qcow2.txt b/docs/interop/qcow2.txt index d7fdb1fee31..597d3f261d5 100644 --- a/docs/interop/qcow2.txt +++ b/docs/interop/qcow2.txt @@ -47,7 +47,7 @@ The first cluster of a qcow2 image contains the file head= er: 1 for AES encryption 2 for LUKS encryption - 36 - 39: l1_size + 36 - 39: l1_entries Number of entries in the active L1 table 40 - 47: l1_table_offset @@ -538,7 +538,7 @@ Structure of a bitmap directory entry: (described below) for the bitmap starts. Must be align= ed to a cluster boundary. - 8 - 11: bitmap_table_size + 8 - 11: bitmap_table_entries Number of entries in the bitmap table of the bitmap. 12 - 15: flags --=20 2.14.3 From nobody Wed May 1 22:22:49 2024 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; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1518564943550675.4499686220817; Tue, 13 Feb 2018 15:35:43 -0800 (PST) Received: from localhost ([::1]:34314 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elk6v-000891-HF for importer@patchew.org; Tue, 13 Feb 2018 18:35:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43379) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elk4z-0006m7-58 for qemu-devel@nongnu.org; Tue, 13 Feb 2018 18:33:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elk4w-0003Yq-Mv for qemu-devel@nongnu.org; Tue, 13 Feb 2018 18:33:39 -0500 Received: from mx1.redhat.com ([209.132.183.28]:53890) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1elk4u-0003UE-4B; Tue, 13 Feb 2018 18:33:36 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 540505D68B; Tue, 13 Feb 2018 23:33:35 +0000 (UTC) Received: from red.redhat.com (ovpn-122-122.rdu2.redhat.com [10.10.122.122]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6E0D660BE5; Tue, 13 Feb 2018 23:33:34 +0000 (UTC) From: Eric Blake To: qemu-devel@nongnu.org Date: Tue, 13 Feb 2018 17:33:24 -0600 Message-Id: <20180213233324.5096-3-eblake@redhat.com> In-Reply-To: <20180213233324.5096-1-eblake@redhat.com> References: <20180213233324.5096-1-eblake@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 13 Feb 2018 23:33:35 +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] [PATCH 2/2] qcow2: Prefer 'entries' over 'size' during cache creation 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: Kevin Wolf , berto@igalia.com, qemu-block@nongnu.org, mreitz@redhat.com 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" Using 'size' for anything other than bytes is difficult to reason about; let's rename entries related to the number of entries in a cache accordingly. Signed-off-by: Eric Blake --- block/qcow2.h | 4 ++-- block/qcow2.c | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/block/qcow2.h b/block/qcow2.h index 883802241fb..0daf8e6d6f8 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -68,10 +68,10 @@ #define MAX_CLUSTER_BITS 21 /* Must be at least 2 to cover COW */ -#define MIN_L2_CACHE_SIZE 2 /* cache entries */ +#define MIN_L2_CACHE_ENTRIES 2 /* Must be at least 4 to cover all cases of refcount table growth */ -#define MIN_REFCOUNT_CACHE_SIZE 4 /* clusters */ +#define MIN_REFCOUNT_CACHE_ENTRIES 4 /* Whichever is more */ #define DEFAULT_L2_CACHE_CLUSTERS 8 /* clusters */ diff --git a/block/qcow2.c b/block/qcow2.c index 288b5299d80..f25c33df1d1 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -843,6 +843,7 @@ static int qcow2_update_options_prepare(BlockDriverStat= e *bs, const char *opt_overlap_check, *opt_overlap_check_template; int overlap_check_template =3D 0; uint64_t l2_cache_size, l2_cache_entry_size, refcount_cache_size; + uint64_t l2_cache_entries, refcount_cache_entries; int i; const char *encryptfmt; QDict *encryptopts =3D NULL; @@ -869,21 +870,21 @@ static int qcow2_update_options_prepare(BlockDriverSt= ate *bs, goto fail; } - l2_cache_size /=3D l2_cache_entry_size; - if (l2_cache_size < MIN_L2_CACHE_SIZE) { - l2_cache_size =3D MIN_L2_CACHE_SIZE; + l2_cache_entries =3D l2_cache_size / l2_cache_entry_size; + if (l2_cache_entries < MIN_L2_CACHE_ENTRIES) { + l2_cache_entries =3D MIN_L2_CACHE_ENTRIES; } - if (l2_cache_size > INT_MAX) { + if (l2_cache_entries > INT_MAX) { error_setg(errp, "L2 cache size too big"); ret =3D -EINVAL; goto fail; } - refcount_cache_size /=3D s->cluster_size; - if (refcount_cache_size < MIN_REFCOUNT_CACHE_SIZE) { - refcount_cache_size =3D MIN_REFCOUNT_CACHE_SIZE; + refcount_cache_entries =3D refcount_cache_size / s->cluster_size; + if (refcount_cache_entries < MIN_REFCOUNT_CACHE_ENTRIES) { + refcount_cache_entries =3D MIN_REFCOUNT_CACHE_ENTRIES; } - if (refcount_cache_size > INT_MAX) { + if (refcount_cache_entries > INT_MAX) { error_setg(errp, "Refcount cache size too big"); ret =3D -EINVAL; goto fail; @@ -908,9 +909,9 @@ static int qcow2_update_options_prepare(BlockDriverStat= e *bs, } r->l2_slice_size =3D l2_cache_entry_size / sizeof(uint64_t); - r->l2_table_cache =3D qcow2_cache_create(bs, l2_cache_size, + r->l2_table_cache =3D qcow2_cache_create(bs, l2_cache_entries, l2_cache_entry_size); - r->refcount_block_cache =3D qcow2_cache_create(bs, refcount_cache_size, + r->refcount_block_cache =3D qcow2_cache_create(bs, refcount_cache_entr= ies, s->cluster_size); if (r->l2_table_cache =3D=3D NULL || r->refcount_block_cache =3D=3D NU= LL) { error_setg(errp, "Could not allocate metadata caches"); --=20 2.14.3