diff mbox

[2/2] commit: Don't use error_abort in commit_start

Message ID 20170303133816.30303-3-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng March 3, 2017, 1:38 p.m. UTC
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(-)

Comments

Kevin Wolf March 6, 2017, 4:34 p.m. UTC | #1
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
diff mbox

Patch

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);