[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/21] qcow2: refcount_order parameter for qcow2
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH 10/21] qcow2: refcount_order parameter for qcow2_create2 |
Date: |
Mon, 10 Nov 2014 22:40:34 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 |
On 11/10/2014 06:45 AM, Max Reitz wrote:
> Add a refcount_order parameter to qcow2_create2(), use that value for
> the image header and for calculating the size required for
> preallocation.
>
> For now, always pass 4.
>
> Signed-off-by: Max Reitz <address@hidden>
> ---
> block/qcow2.c | 41 ++++++++++++++++++++++++++++++-----------
> 1 file changed, 30 insertions(+), 11 deletions(-)
>
> @@ -1811,6 +1811,13 @@ static int qcow2_create2(const char *filename, int64_t
> total_size,
> int64_t meta_size = 0;
> uint64_t nreftablee, nrefblocke, nl1e, nl2e;
> int64_t aligned_total_size = align_offset(total_size, cluster_size);
> + int refblock_bits, refblock_size;
> + /* refcount entry size in bytes */
> + double rces = (1 << refcount_order) / 8.;
Would float be any simpler than double?
> +
> + /* see qcow2_open() */
> + refblock_bits = cluster_bits - (refcount_order - 3);
> + refblock_size = 1 << refblock_bits;
>
> /* header: 1 cluster */
> meta_size += cluster_size;
> @@ -1835,20 +1842,20 @@ static int qcow2_create2(const char *filename,
> int64_t total_size,
> * c = cluster size
> * y1 = number of refcount blocks entries
> * y2 = meta size including everything
> + * rces = refcount entry size in bytes
> * then,
> * y1 = (y2 + a)/c
> - * y2 = y1 * sizeof(u16) + y1 * sizeof(u16) * sizeof(u64) / c + m
> + * y2 = y1 * rces + y1 * rces * sizeof(u64) / c + m
Hmm. This changes from integral to floating point. Are we going to
suffer from any rounding problems? I guess you want double to ensure
maximum precision; but whereas earlier patches were limited with
refcount_order of 6 to 2^63, this now limits us around 2^53 if we are
still trying to be accurate.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- Re: [Qemu-devel] [PATCH 07/21] qcow2: Helper for refcount array size calculation, (continued)
[Qemu-devel] [PATCH 08/21] qcow2: More helpers for refcount modification, Max Reitz, 2014/11/10
[Qemu-devel] [PATCH 09/21] qcow2: Open images with refcount order != 4, Max Reitz, 2014/11/10
[Qemu-devel] [PATCH 10/21] qcow2: refcount_order parameter for qcow2_create2, Max Reitz, 2014/11/10
- Re: [Qemu-devel] [PATCH 10/21] qcow2: refcount_order parameter for qcow2_create2,
Eric Blake <=
[Qemu-devel] [PATCH 06/21] qcow2: Helper function for refcount modification, Max Reitz, 2014/11/10
[Qemu-devel] [PATCH 11/21] iotests: Prepare for refcount_width option, Max Reitz, 2014/11/10
[Qemu-devel] [PATCH 13/21] block: Add opaque value to the amend CB, Max Reitz, 2014/11/10