summaryrefslogtreecommitdiff
path: root/block/qcow2.c
diff options
context:
space:
mode:
authorMaxim Levitsky <mlevitsk@redhat.com>2020-12-17 19:09:04 +0200
committerKevin Wolf <kwolf@redhat.com>2021-02-15 15:10:14 +0100
commit6094cbeb72117204f3302a4581415ee1dc33a879 (patch)
tree2581645d9cb03b067cb8b3906f4929d02db83771 /block/qcow2.c
parenta890f08e586fd81946c51dae6a878d64486b1364 (diff)
downloadqemu-6094cbeb72117204f3302a4581415ee1dc33a879.zip
block: qcow2: remove the created file on initialization error
If the qcow initialization fails, we should remove the file if it was already created, to avoid leaving stale files around. We already do this for luks raw images. Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Message-Id: <20201217170904.946013-4-mlevitsk@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/qcow2.c')
-rw-r--r--block/qcow2.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/block/qcow2.c b/block/qcow2.c
index 5d94f45be9..d9f49a52e7 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -3846,12 +3846,14 @@ static int coroutine_fn qcow2_co_create_opts(BlockDriver *drv,
/* Create the qcow2 image (format layer) */
ret = qcow2_co_create(create_options, errp);
+finish:
if (ret < 0) {
- goto finish;
+ bdrv_co_delete_file_noerr(bs);
+ bdrv_co_delete_file_noerr(data_bs);
+ } else {
+ ret = 0;
}
- ret = 0;
-finish:
qobject_unref(qdict);
bdrv_unref(bs);
bdrv_unref(data_bs);