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

On 2014-10-20 at 16:48, Kevin Wolf wrote:
> Am 20.10.2014 um 16:39 hat Max Reitz geschrieben:
>> On 20.10.2014 at 16:25, Kevin Wolf wrote:
>>> Am 29.08.2014 um 23:40 hat Max Reitz geschrieben:
>>>> 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);
>>>> +    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;
>>> Might just be me, but size sounds to me as if the unit were bytes. Would
>>> you mind renaming this as refcount_block_entries or refblock_entries?
>> If I'm doing a v7, no. Otherwise, well, see l1_size and l2_size. ;-)
> Good point. This has confused people more than once, so it's probably
> not just me.

Okay, now that I've done it and was about to send the series and just 
wanted to convert a local variable named refcount_table_size to 
refcount_table_entries, I decided not do do this. I'll call it 
refcount_block_size in v7 as well.

The reason for this is that I started looking for "_size" in 
block/qcow2-refcount.c. "_entries" is never used, the number of entries 
per L1, L2 or refcount table is always foo_size. In BDRVQcowState, 
there's not only l1_size and l2_size, but refcount_table_size as well. 
Calling it refcount_block_entries without renaming those would be 
extremely weird, and renaming those does not seem like a viable option 
to me. Furthermore, I'd find it extremely confusing to have "_entries" 
in some places and "_size" in others when there's no difference between 
the two. Currently, people ask "Why is this foo_size an entry count? ... 
Well, okay, that seems to be just the way it is." With foo_entries, 
it'll be "Why is this foo_size an entry count when bar_entries exists, 
so shouldn't it be foo_entries if they want it to be an entry count?"

I'll keep it as refcount_block_size, although I'm afraid reverting all 
these changes will be as hard as having made them in the first place... 
Oh, well, here goes.

Max

  reply	other threads:[~2014-10-21 16:26 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
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 [this message]
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=5446892B.1050109@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.