On Wed, Dec 03, 2014 at 02:37:24PM +0100, Max Reitz wrote: > Refcounts can theoretically be of type uint64_t; in order to be able to > represent the full range, qcow2_get_refcount() cannot use a single > variable to represent both all refcount values and also keep some values > reserved for errors. > > One solution would be to add an Error pointer parameter to > qcow2_get_refcount(); however, no caller could (currently) pass that > error message, so it would have to be emitted immediately and be > passed to the next caller by returning -EIO or something similar. > Therefore, an Error parameter does not offer any advantages here. > > The solution applied by this patch is simpler to use. Because no caller > would be able to pass the error message, they would have to print it and > free it, whereas with this patch the caller only needs to pass the > returned integer (which is often a no-op from the code perspective, > because that integer will be stored in a variable "ret" which will be > returned by the fail path of many callers). > > Signed-off-by: Max Reitz <mre...@redhat.com> > --- > block/qcow2-cluster.c | 8 ++--- > block/qcow2-refcount.c | 79 > +++++++++++++++++++++++++++----------------------- > block/qcow2.h | 3 +- > 3 files changed, 49 insertions(+), 41 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
pgpPJxTvJLy9t.pgp
Description: PGP signature