On 12/15/2014 05:50 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 <mre...@redhat.com> > --- > block/qcow2-cluster.c | 2 +- > block/qcow2-refcount.c | 65 > ++++++++++++++++++++++++++++++++------------------ > block/qcow2.h | 3 ++- > 3 files changed, 45 insertions(+), 25 deletions(-) >
Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature