qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 05/26] qcow2: Use unsigned addend for update_


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH v4 05/26] qcow2: Use unsigned addend for update_refcount()
Date: Wed, 03 Dec 2014 08:55:34 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0

On 12/03/2014 06:37 AM, Max Reitz wrote:
> update_refcount() and qcow2_update_cluster_refcount() currently take a
> signed addend. At least one caller passes a value directly derived from
> an absolute refcount that should be reached ("l2_refcount - 1" in
> expand_zero_clusters_in_l1()). Therefore, the addend should be unsigned
> because unsigned overflow is well-defined in contrast to signed
> overflow. This will be especially important for 64 bit refcounts.
> 
> Because update_refcount() then no longer knows whether the refcount
> should be increased or decreased (which is important for setting the
> refblock-L2-table cache dependency and for overflow/underflow checks),
> it now requires an additional flag which specified exactly that. The
> same applies to qcow2_update_cluster_refcount().
> 
> Signed-off-by: Max Reitz <address@hidden>
> ---
>  block/qcow2-cluster.c  |  2 +-
>  block/qcow2-refcount.c | 63 
> ++++++++++++++++++++++++++++++++------------------
>  block/qcow2.h          |  3 ++-
>  3 files changed, 44 insertions(+), 24 deletions(-)
> 

> @@ -1677,7 +1695,8 @@ static void compare_refcounts(BlockDriverState *bs, 
> BdrvCheckResult *res,
>  
>              if (num_fixed) {
>                  ret = update_refcount(bs, i << s->cluster_bits, 1,
> -                                      (int)refcount2 - (int)refcount1,
> +                                      refcount2 - refcount1,
> +                                      refcount1 > refcount2,
>                                        QCOW2_DISCARD_ALWAYS);

Nice - my comment on 4/26 is indeed addressed here (so I was correct in
guessing that the series touched that area again, and no need to respin).

Reviewed-by: Eric Blake <address@hidden>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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