All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: "Benoît Canet" <benoit.canet@nodalink.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 01/11] qcow2: Calculate refcount block entry count
Date: Sat, 11 Oct 2014 12:27:51 +0200	[thread overview]
Message-ID: <54390627.4010606@redhat.com> (raw)
In-Reply-To: <20141010122928.GD22893@nodalink.com>

Am 10.10.2014 um 14:29 schrieb Benoît Canet:
> On Fri, Aug 29, 2014 at 11:40:53PM +0200, Max Reitz wrote:
>> The size of a refblock entry is (in theory) variable; calculate
>> therefore the number of entries per refblock and the according bit shift
>> (1 << x == entry count) when opening an image.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>   block/qcow2.c | 2 ++
>>   block/qcow2.h | 2 ++
>>   2 files changed, 4 insertions(+)
>>
>> diff --git a/block/qcow2.c b/block/qcow2.c
>> index f9e045f..172ad00 100644
>> --- a/block/qcow2.c
>> +++ b/block/qcow2.c
>> @@ -689,6 +689,8 @@ static int qcow2_open(BlockDriverState *bs, QDict *options, int flags,
>>   
>>       s->l2_bits = s->cluster_bits - 3; /* L2 is always one cluster */
>>       s->l2_size = 1 << s->l2_bits;
>> +    s->refcount_block_bits = s->cluster_bits - (s->refcount_order - 3);
> After carefull examination (s->refcount_order - 3) == REFCOUNT_SHIFT.
> Why not also creating s->refcount_shift and make use of it in order to avoid
> torturing the mind of the next reader.

I'm sorry. *g*

Well, I'm against creating s->refcount_shift, because that name implies 
you could use it for shifts. But you shouldn't do that, because it may 
be both negative and positive.

> Or simply recall in a comment that there is 2^3 bits in a byte.

I like this more. :-)

Max

> Best regards
>
> Benoît
>
>> +    s->refcount_block_size = 1 << s->refcount_block_bits;
>>       bs->total_sectors = header.size / 512;
>>       s->csize_shift = (62 - (s->cluster_bits - 8));
>>       s->csize_mask = (1 << (s->cluster_bits - 8)) - 1;
>> diff --git a/block/qcow2.h b/block/qcow2.h
>> index 6aeb7ea..7c01fb7 100644
>> --- a/block/qcow2.h
>> +++ b/block/qcow2.h
>> @@ -222,6 +222,8 @@ typedef struct BDRVQcowState {
>>       int l2_size;
>>       int l1_size;
>>       int l1_vm_state_index;
>> +    int refcount_block_bits;
>> +    int refcount_block_size;
>>       int csize_shift;
>>       int csize_mask;
>>       uint64_t cluster_offset_mask;
>> -- 
>> 2.1.0
>>

  reply	other threads:[~2014-10-11 10:28 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-29 21:40 [Qemu-devel] [PATCH v5 00/11] qcow2: Fix image repairing Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 01/11] qcow2: Calculate refcount block entry count Max Reitz
2014-08-29 23:03   ` Eric Blake
2014-09-02 18:56     ` Max Reitz
2014-10-10 12:29   ` Benoît Canet
2014-10-11 10:27     ` Max Reitz [this message]
2014-10-20 14:25   ` Kevin Wolf
2014-10-20 14:39     ` Max Reitz
2014-10-20 14:48       ` Kevin Wolf
2014-10-21 16:26         ` Max Reitz
2014-10-22  8:27           ` Kevin Wolf
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 02/11] qcow2: Fix leaks in dirty images Max Reitz
2014-10-20 14:28   ` Kevin Wolf
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 03/11] qcow2: Split qcow2_check_refcounts() Max Reitz
2014-10-20 14:45   ` Kevin Wolf
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 04/11] qcow2: Pull check_refblocks() up Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 05/11] qcow2: Reuse refcount table in calculate_refcounts() Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 06/11] qcow2: Fix refcount blocks beyond image end Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 07/11] qcow2: Do not perform potentially damaging repairs Max Reitz
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 08/11] qcow2: Rebuild refcount structure during check Max Reitz
2014-10-08 23:09   ` Eric Blake
2014-10-11 10:17     ` Max Reitz
2014-10-16 15:27     ` Max Reitz
2014-10-16 15:33       ` Eric Blake
2014-10-10 12:44   ` Benoît Canet
2014-10-11 10:27     ` Max Reitz
2014-10-11 18:56   ` Benoît Canet
2014-10-12  7:32     ` Max Reitz
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 09/11] qcow2: Clean up after refcount rebuild Max Reitz
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 10/11] iotests: Fix test outputs Max Reitz
2014-09-02 19:49   ` Eric Blake
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 11/11] iotests: Add test for potentially damaging repairs Max Reitz
2014-09-02 19:52   ` Eric Blake
2014-10-08 19:25 ` [Qemu-devel] [PATCH v5 00/11] qcow2: Fix image repairing Max Reitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54390627.4010606@redhat.com \
    --to=mreitz@redhat.com \
    --cc=benoit.canet@nodalink.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.