Patchwork propagate write_refcount_block_entries error

login
register
mail settings
Submitter Juan Quintela
Date June 1, 2010, 2:11 p.m.
Message ID <1275401486-10848-1-git-send-email-quintela@redhat.com>
Download mbox | patch
Permalink /patch/54212/
State New
Headers show

Comments

Juan Quintela - June 1, 2010, 2:11 p.m.
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 block/qcow2-refcount.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)
Kevin Wolf - June 1, 2010, 2:38 p.m.
Am 01.06.2010 16:11, schrieb Juan Quintela:
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
>  block/qcow2-refcount.c |   16 ++++++++--------
>  1 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
> index 744107c..4226dce 100644
> --- a/block/qcow2-refcount.c
> +++ b/block/qcow2-refcount.c
> @@ -460,10 +460,10 @@ static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs,
>          table_index = cluster_index >> (s->cluster_bits - REFCOUNT_SHIFT);
>          if ((old_table_index >= 0) && (table_index != old_table_index)) {
> 
> -            if (write_refcount_block_entries(bs, refcount_block_offset,
> -                first_index, last_index) < 0)
> -            {
> -                return -EIO;
> +            ret = write_refcount_block_entries(bs, refcount_block_offset,
> +                                               first_index, last_index);
> +            if (ret < 0) {
> +                return ret;
>              }
> 
>              first_index = -1;
> @@ -505,10 +505,10 @@ fail:
> 
>      /* Write last changed block to disk */
>      if (refcount_block_offset != 0) {
> -        if (write_refcount_block_entries(bs, refcount_block_offset,
> -            first_index, last_index) < 0)
> -        {
> -            return ret < 0 ? ret : -EIO;
> +        int write_ret = write_refcount_block_entries(bs, refcount_block_offset,
> +                                                     first_index, last_index);
> +        if (write_ret < 0){
> +            return ret < 0 ? ret : write_ret;
>          }
>      }
> 

Something similar (but more complete) is already queued:
http://repo.or.cz/w/qemu/kevin.git/commitdiff/b10200c1

Thanks anyway, the idea is the right one. :-)

Kevin

Patch

diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 744107c..4226dce 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -460,10 +460,10 @@  static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs,
         table_index = cluster_index >> (s->cluster_bits - REFCOUNT_SHIFT);
         if ((old_table_index >= 0) && (table_index != old_table_index)) {

-            if (write_refcount_block_entries(bs, refcount_block_offset,
-                first_index, last_index) < 0)
-            {
-                return -EIO;
+            ret = write_refcount_block_entries(bs, refcount_block_offset,
+                                               first_index, last_index);
+            if (ret < 0) {
+                return ret;
             }

             first_index = -1;
@@ -505,10 +505,10 @@  fail:

     /* Write last changed block to disk */
     if (refcount_block_offset != 0) {
-        if (write_refcount_block_entries(bs, refcount_block_offset,
-            first_index, last_index) < 0)
-        {
-            return ret < 0 ? ret : -EIO;
+        int write_ret = write_refcount_block_entries(bs, refcount_block_offset,
+                                                     first_index, last_index);
+        if (write_ret < 0){
+            return ret < 0 ? ret : write_ret;
         }
     }