Automatically free helper variables, remove the 'cleanup' label and
use virBufferCurrentContent() to take the XML from the buffer rather
than extracting it to a separate variable.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_migration.c | 42 +++++++++++++--------------------------
1 file changed, 14 insertions(+), 28 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 5e27cd5dbe..32569ecbb4 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -277,12 +277,11 @@ qemuMigrationDstPrecreateDisk(virConnectPtr *conn,
virDomainDiskDef *disk,
unsigned long long capacity)
{
- int ret = -1;
- virStoragePoolPtr pool = NULL;
- virStorageVolPtr vol = NULL;
- char *volName = NULL, *basePath = NULL;
- char *volStr = NULL;
+ g_autoptr(virStoragePool) pool = NULL;
+ g_autoptr(virStorageVol) vol = NULL;
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
+ char *volName = NULL;
+ g_autofree char *basePath = NULL;
const char *format = NULL;
const char *compat = NULL;
unsigned int flags = 0;
@@ -303,7 +302,7 @@ qemuMigrationDstPrecreateDisk(virConnectPtr *conn,
virReportError(VIR_ERR_INVALID_ARG,
_("malformed disk path: %1$s"),
disk->src->path);
- goto cleanup;
+ return -1;
}
*volName = '\0';
@@ -311,11 +310,11 @@ qemuMigrationDstPrecreateDisk(virConnectPtr *conn,
if (!*conn) {
if (!(*conn = virGetConnectStorage()))
- goto cleanup;
+ return -1;
}
if (!(pool = virStoragePoolLookupByTargetPath(*conn, basePath)))
- goto cleanup;
+ return -1;
format = virStorageFileFormatTypeToString(disk->src->format);
if (disk->src->format == VIR_STORAGE_FILE_QCOW2) {
flags |= VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
@@ -327,11 +326,11 @@ qemuMigrationDstPrecreateDisk(virConnectPtr *conn,
case VIR_STORAGE_TYPE_VOLUME:
if (!*conn) {
if (!(*conn = virGetConnectStorage()))
- goto cleanup;
+ return -1;
}
if (!(pool = virStoragePoolLookupByName(*conn,
disk->src->srcpool->pool)))
- goto cleanup;
+ return -1;
format = virStorageFileFormatTypeToString(disk->src->format);
volName = disk->src->srcpool->volume;
if (disk->src->format == VIR_STORAGE_FILE_QCOW2)
@@ -353,14 +352,13 @@ qemuMigrationDstPrecreateDisk(virConnectPtr *conn,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("cannot precreate storage for disk type
'%1$s'"),
virStorageTypeToString(disk->src->type));
- goto cleanup;
+ return -1;
}
if ((vol = virStorageVolLookupByName(pool, volName))) {
VIR_DEBUG("Skipping creation of already existing volume of name
'%s'",
volName);
- ret = 0;
- goto cleanup;
+ return 0;
}
virBufferAddLit(&buf, "<volume>\n");
@@ -377,22 +375,10 @@ qemuMigrationDstPrecreateDisk(virConnectPtr *conn,
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</volume>\n");
- if (!(volStr = virBufferContentAndReset(&buf))) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("unable to create volume XML"));
- goto cleanup;
- }
-
- if (!(vol = virStorageVolCreateXML(pool, volStr, flags)))
- goto cleanup;
+ if (!(vol = virStorageVolCreateXML(pool, virBufferCurrentContent(&buf), flags)))
+ return -1;
- ret = 0;
- cleanup:
- VIR_FREE(basePath);
- VIR_FREE(volStr);
- virObjectUnref(vol);
- virObjectUnref(pool);
- return ret;
+ return 0;
}
static bool
--
2.43.0