block: qcow2: remove the created file on initialization error
authorMaxim Levitsky <mlevitsk@redhat.com>
Thu, 17 Dec 2020 17:09:04 +0000 (19:09 +0200)
committerKevin Wolf <kwolf@redhat.com>
Mon, 15 Feb 2021 14:10:14 +0000 (15:10 +0100)
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>
block/qcow2.c

index 5d94f45be9507bd5f908591d3c59b3500b682257..d9f49a52e7707bcf6b2c24e1d3b5e6585b3d548d 100644 (file)
@@ -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);