Message ID | aa495045770a6f1a7cc5d408397a17c75097fdd8.1464346103.git.berto@igalia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 27.05.2016 12:53, Alberto Garcia wrote: > 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 <berto@igalia.com> > --- > block/commit.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) Reviewed-by: Max Reitz <mreitz@redhat.com>
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);
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 <berto@igalia.com> --- block/commit.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)