qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qcow2: Optimize the refcount-block overlap chec


From: Max Reitz
Subject: Re: [Qemu-devel] [PATCH] qcow2: Optimize the refcount-block overlap check
Date: Wed, 1 Feb 2017 02:16:12 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0

On 30.01.2017 17:34, Alberto Garcia wrote:
> On Mon 30 Jan 2017 05:14:41 PM CET, Alberto Garcia wrote:
> 
>> This patch keeps the index of the last used (i.e. non-zero) entry in
>> the refcount table and updates it every time the table changes. The
>> refcount-block overlap check then uses that index instead of reading
>> the whole table.
> 
> Note that while I decided to go for this approach the patch can be made
> much simpler by simply stopping at the first empty entry in the refcount
> table:
> 
>     if ((chk & QCOW2_OL_REFCOUNT_BLOCK) && s->refcount_table) {
>         for (i = 0; i < s->refcount_table_size; i++) {
>             if (!(s->refcount_table[i] & REFT_OFFSET_MASK)) {
>                 break;
>             }
>             if (overlaps_with(s->refcount_table[i] & REFT_OFFSET_MASK,
>                 s->cluster_size)) {
>                 return QCOW2_OL_REFCOUNT_BLOCK;
>             }
>         }
>     }
> 
> I don't think QEMU produces files where refcount_table[i] == 0 but
> refcount_table[i + 1] != 0. Do they even make sense? In any case, my
> patch would cover those cases too, but this simplified version wouldn't.

I think it would be reasonable enough to assume that such images don't
exist (and if they do, we don't do overlap checks above the hole -- that
isn't exactly the end of the world). But your patch looks simple enough
as it is.

Max

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]