[Qemu-devel] [PATCH 2/2] commit: Don't use error_abort in commit_start

Fam Zheng posted 2 patches 8 years, 11 months ago
There is a newer version of this series
[Qemu-devel] [PATCH 2/2] commit: Don't use error_abort in commit_start
Posted by Fam Zheng 8 years, 11 months ago
bdrv_set_backing_hd failure needn't be abort. Since we already have
error parameter, use it.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 block/commit.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/block/commit.c b/block/commit.c
index 22a0a4d..1be19e1 100644
--- a/block/commit.c
+++ b/block/commit.c
@@ -316,8 +316,16 @@ void commit_start(const char *job_id, BlockDriverState *bs,
         goto fail;
     }
 
-    bdrv_set_backing_hd(commit_top_bs, top, &error_abort);
-    bdrv_set_backing_hd(overlay_bs, commit_top_bs, &error_abort);
+    bdrv_set_backing_hd(commit_top_bs, top, &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        goto fail;
+    }
+    bdrv_set_backing_hd(overlay_bs, commit_top_bs, &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        goto fail;
+    }
 
     s->commit_top_bs = commit_top_bs;
     bdrv_unref(commit_top_bs);
-- 
2.9.3


Re: [Qemu-devel] [PATCH 2/2] commit: Don't use error_abort in commit_start
Posted by Kevin Wolf 8 years, 11 months ago
Am 03.03.2017 um 14:38 hat Fam Zheng geschrieben:
> bdrv_set_backing_hd failure needn't be abort. Since we already have
> error parameter, use it.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  block/commit.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/block/commit.c b/block/commit.c
> index 22a0a4d..1be19e1 100644
> --- a/block/commit.c
> +++ b/block/commit.c
> @@ -316,8 +316,16 @@ void commit_start(const char *job_id, BlockDriverState *bs,
>          goto fail;
>      }
>  
> -    bdrv_set_backing_hd(commit_top_bs, top, &error_abort);
> -    bdrv_set_backing_hd(overlay_bs, commit_top_bs, &error_abort);
> +    bdrv_set_backing_hd(commit_top_bs, top, &local_err);
> +    if (local_err) {
> +        error_propagate(errp, local_err);
> +        goto fail;
> +    }
> +    bdrv_set_backing_hd(overlay_bs, commit_top_bs, &local_err);
> +    if (local_err) {
> +        error_propagate(errp, local_err);
> +        goto fail;
> +    }

In these error paths, bdrv_unref(commit_top_bs) seems to missing.

Kevin