[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 11/24] qcow2: refcount_order parameter for qc
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v6 11/24] qcow2: refcount_order parameter for qcow2_create2 |
Date: |
Wed, 18 Feb 2015 12:05:29 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 10.02.2015 um 21:28 hat Max Reitz geschrieben:
> 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.
>
> This addition requires changes to the calculation of the file size for
> the "full" and "falloc" preallocation modes. That in turn is a nice
> opportunity to add a comment about that calculation not necessarily
> being exact (and that being intentional).
>
> Signed-off-by: Max Reitz <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> Reviewed-by: Stefan Hajnoczi <address@hidden>
> ---
> block/qcow2.c | 46 +++++++++++++++++++++++++++++++++++-----------
> 1 file changed, 35 insertions(+), 11 deletions(-)
>
> diff --git a/block/qcow2.c b/block/qcow2.c
> index e563a30..b7c023e 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -1783,7 +1783,7 @@ static int preallocate(BlockDriverState *bs)
> static int qcow2_create2(const char *filename, int64_t total_size,
> const char *backing_file, const char
> *backing_format,
> int flags, size_t cluster_size, PreallocMode
> prealloc,
> - QemuOpts *opts, int version,
> + QemuOpts *opts, int version, int refcount_order,
> Error **errp)
> {
> /* Calculate cluster_bits */
> @@ -1816,9 +1816,21 @@ static int qcow2_create2(const char *filename, int64_t
> total_size,
> int ret;
>
> if (prealloc == PREALLOC_MODE_FULL || prealloc == PREALLOC_MODE_FALLOC) {
> + /* Note: The following calculation does not need to be exact; if it
> is a
> + * bit off, either some bytes will be "leaked" (which is fine) or we
> + * will need to increase the file size by some bytes (which is fine,
> + * too, as long as the bulk is allocated here). Therefore, using
> + * floating point arithmetic is fine. */
> 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.;
Not objecting, but we need to be careful with floating point
calculations as the floating point state is not saved in coroutine
switches.
Kevin
- Re: [Qemu-devel] [PATCH v6 08/24] qcow2: Helper function for refcount modification, (continued)
- [Qemu-devel] [PATCH v6 12/24] qcow2: Use symbolic macros in qcow2_amend_options, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 07/24] qcow2: Helper for refcount array reallocation, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 09/24] qcow2: More helpers for refcount modification, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 13/24] iotests: Prepare for refcount_bits option, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 15/24] progress: Allow regressing progress, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 11/24] qcow2: refcount_order parameter for qcow2_create2, Max Reitz, 2015/02/10
- Re: [Qemu-devel] [PATCH v6 11/24] qcow2: refcount_order parameter for qcow2_create2,
Kevin Wolf <=
- [Qemu-devel] [PATCH v6 20/24] qcow2: Use intermediate helper CB for amend, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 16/24] block: Add opaque value to the amend CB, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 14/24] qcow2: Allow creation with refcount order != 4, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 17/24] qcow2: Use error_report() in qcow2_amend_options(), Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 18/24] qcow2: Use abort() instead of assert(false), Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 23/24] qcow2: Point to amend function in check, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 19/24] qcow2: Split upgrade/downgrade paths for amend, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 22/24] qcow2: Invoke refcount order amendment function, Max Reitz, 2015/02/10
- [Qemu-devel] [PATCH v6 21/24] qcow2: Add function for refcount order amendment, Max Reitz, 2015/02/10