From: Alberto Garcia Date: Fri, 27 May 2016 10:53:39 +0000 (+0200) Subject: block: Create the commit block job before reopening any image X-Git-Tag: TizenStudio_2.0_p4.0~6^2~12^2~6^2~200^2^2~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=834fe28ddffaec469cf048c7a48eb610e7a6e906;p=sdk%2Femulator%2Fqemu.git block: Create the commit block job before reopening any image If the base or overlay images need to be reopened in read-write mode but the block_job_create() call fails then no one will put those images back in read-only mode. We can solve this problem easily by calling block_job_create() first. Signed-off-by: Alberto Garcia Message-id: aa495045770a6f1a7cc5d408397a17c75097fdd8.1464346103.git.berto@igalia.com Reviewed-by: Max Reitz Signed-off-by: Max Reitz --- diff --git a/block/commit.c b/block/commit.c index 8a00e11..444333b 100644 --- a/block/commit.c +++ b/block/commit.c @@ -236,6 +236,11 @@ void commit_start(BlockDriverState *bs, BlockDriverState *base, return; } + s = block_job_create(&commit_job_driver, bs, speed, cb, opaque, errp); + if (!s) { + return; + } + orig_base_flags = bdrv_get_flags(base); orig_overlay_flags = bdrv_get_flags(overlay_bs); @@ -252,16 +257,12 @@ void commit_start(BlockDriverState *bs, BlockDriverState *base, bdrv_reopen_multiple(reopen_queue, &local_err); if (local_err != NULL) { error_propagate(errp, local_err); + block_job_unref(&s->common); return; } } - s = block_job_create(&commit_job_driver, bs, speed, cb, opaque, errp); - if (!s) { - return; - } - s->base = blk_new(); blk_insert_bs(s->base, base);