mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
storage: Use VIR_AUTOFREE for storage driver
Let's make use of the auto __cleanup capabilities cleaning up any now unnecessary goto paths. Signed-off-by: John Ferlan <jferlan@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
5028781621
commit
38362460dd
@ -122,7 +122,7 @@ storagePoolUpdateStateCallback(virStoragePoolObjPtr obj,
|
||||
virStoragePoolDefPtr def = virStoragePoolObjGetDef(obj);
|
||||
bool active = false;
|
||||
virStorageBackendPtr backend;
|
||||
char *stateFile;
|
||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||
|
||||
if ((backend = virStorageBackendForType(def->type)) == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
@ -164,8 +164,6 @@ storagePoolUpdateStateCallback(virStoragePoolObjPtr obj,
|
||||
if (!virStoragePoolObjIsActive(obj))
|
||||
virStoragePoolUpdateInactive(&obj);
|
||||
|
||||
VIR_FREE(stateFile);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -203,7 +201,7 @@ storageDriverAutostartCallback(virStoragePoolObjPtr obj,
|
||||
}
|
||||
|
||||
if (started) {
|
||||
char *stateFile;
|
||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||
|
||||
virStoragePoolObjClearVols(obj);
|
||||
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
||||
@ -217,7 +215,6 @@ storageDriverAutostartCallback(virStoragePoolObjPtr obj,
|
||||
} else {
|
||||
virStoragePoolObjSetActive(obj, true);
|
||||
}
|
||||
VIR_FREE(stateFile);
|
||||
}
|
||||
}
|
||||
|
||||
@ -240,16 +237,15 @@ storageStateInitialize(bool privileged,
|
||||
virStateInhibitCallback callback ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int ret = -1;
|
||||
char *configdir = NULL;
|
||||
char *rundir = NULL;
|
||||
VIR_AUTOFREE(char *) configdir = NULL;
|
||||
VIR_AUTOFREE(char *) rundir = NULL;
|
||||
|
||||
if (VIR_ALLOC(driver) < 0)
|
||||
return ret;
|
||||
return -1;
|
||||
|
||||
if (virMutexInit(&driver->lock) < 0) {
|
||||
VIR_FREE(driver);
|
||||
return ret;
|
||||
return -1;
|
||||
}
|
||||
storageDriverLock();
|
||||
|
||||
@ -302,16 +298,12 @@ storageStateInitialize(bool privileged,
|
||||
|
||||
storageDriverUnlock();
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
VIR_FREE(configdir);
|
||||
VIR_FREE(rundir);
|
||||
return ret;
|
||||
return 0;
|
||||
|
||||
error:
|
||||
storageDriverUnlock();
|
||||
storageStateCleanup();
|
||||
goto cleanup;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -695,9 +687,9 @@ storagePoolCreateXML(virConnectPtr conn,
|
||||
virStoragePoolPtr pool = NULL;
|
||||
virStorageBackendPtr backend;
|
||||
virObjectEventPtr event = NULL;
|
||||
char *stateFile = NULL;
|
||||
unsigned int build_flags = 0;
|
||||
VIR_AUTOPTR(virStoragePoolDef) newDef = NULL;
|
||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||
|
||||
virCheckFlags(VIR_STORAGE_POOL_CREATE_WITH_BUILD |
|
||||
VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE |
|
||||
@ -761,7 +753,6 @@ storagePoolCreateXML(virConnectPtr conn,
|
||||
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(stateFile);
|
||||
virObjectEventStateQueue(driver->storageEventState, event);
|
||||
virStoragePoolObjEndAPI(&obj);
|
||||
return pool;
|
||||
@ -892,8 +883,8 @@ storagePoolCreate(virStoragePoolPtr pool,
|
||||
virStorageBackendPtr backend;
|
||||
virObjectEventPtr event = NULL;
|
||||
int ret = -1;
|
||||
char *stateFile = NULL;
|
||||
unsigned int build_flags = 0;
|
||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||
|
||||
virCheckFlags(VIR_STORAGE_POOL_CREATE_WITH_BUILD |
|
||||
VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE |
|
||||
@ -955,7 +946,6 @@ storagePoolCreate(virStoragePoolPtr pool,
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(stateFile);
|
||||
virObjectEventStateQueue(driver->storageEventState, event);
|
||||
virStoragePoolObjEndAPI(&obj);
|
||||
return ret;
|
||||
@ -1013,8 +1003,8 @@ storagePoolDestroy(virStoragePoolPtr pool)
|
||||
virStoragePoolDefPtr def;
|
||||
virStorageBackendPtr backend;
|
||||
virObjectEventPtr event = NULL;
|
||||
char *stateFile = NULL;
|
||||
int ret = -1;
|
||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||
|
||||
if (!(obj = storagePoolObjFindByUUID(pool->uuid, pool->name)))
|
||||
goto cleanup;
|
||||
@ -1045,7 +1035,6 @@ storagePoolDestroy(virStoragePoolPtr pool)
|
||||
goto cleanup;
|
||||
|
||||
unlink(stateFile);
|
||||
VIR_FREE(stateFile);
|
||||
|
||||
if (backend->stopPool &&
|
||||
backend->stopPool(obj) < 0)
|
||||
@ -1078,8 +1067,8 @@ storagePoolDelete(virStoragePoolPtr pool,
|
||||
virStoragePoolDefPtr def;
|
||||
virStorageBackendPtr backend;
|
||||
virObjectEventPtr event = NULL;
|
||||
char *stateFile = NULL;
|
||||
int ret = -1;
|
||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||
|
||||
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
|
||||
return -1;
|
||||
@ -1111,7 +1100,6 @@ storagePoolDelete(virStoragePoolPtr pool,
|
||||
goto cleanup;
|
||||
|
||||
unlink(stateFile);
|
||||
VIR_FREE(stateFile);
|
||||
|
||||
if (!backend->deletePool) {
|
||||
virReportError(VIR_ERR_NO_SUPPORT,
|
||||
@ -1172,10 +1160,10 @@ storagePoolRefresh(virStoragePoolPtr pool,
|
||||
|
||||
virStoragePoolObjClearVols(obj);
|
||||
if (backend->refreshPool(obj) < 0) {
|
||||
char *stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||
|
||||
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
||||
storagePoolRefreshFailCleanup(backend, obj, stateFile);
|
||||
VIR_FREE(stateFile);
|
||||
|
||||
event = virStoragePoolEventLifecycleNew(def->name,
|
||||
def->uuid,
|
||||
@ -1540,7 +1528,7 @@ storageVolLookupByPathCallback(virStoragePoolObjPtr obj,
|
||||
{
|
||||
struct storageVolLookupData *data = (struct storageVolLookupData *)opaque;
|
||||
virStoragePoolDefPtr def;
|
||||
char *stable_path = NULL;
|
||||
VIR_AUTOFREE(char *) stable_path = NULL;
|
||||
|
||||
if (!virStoragePoolObjIsActive(obj))
|
||||
return false;
|
||||
@ -1579,7 +1567,6 @@ storageVolLookupByPathCallback(virStoragePoolObjPtr obj,
|
||||
}
|
||||
|
||||
data->voldef = virStorageVolDefFindByPath(obj, stable_path);
|
||||
VIR_FREE(stable_path);
|
||||
|
||||
return !!data->voldef;
|
||||
}
|
||||
@ -1649,7 +1636,7 @@ storagePoolLookupByTargetPath(virConnectPtr conn,
|
||||
virStoragePoolObjPtr obj;
|
||||
virStoragePoolDefPtr def;
|
||||
virStoragePoolPtr pool = NULL;
|
||||
char *cleanpath;
|
||||
VIR_AUTOFREE(char *) cleanpath = NULL;
|
||||
|
||||
cleanpath = virFileSanitizePath(path);
|
||||
if (!cleanpath)
|
||||
@ -1660,7 +1647,7 @@ storagePoolLookupByTargetPath(virConnectPtr conn,
|
||||
cleanpath))) {
|
||||
def = virStoragePoolObjGetDef(obj);
|
||||
if (virStoragePoolLookupByTargetPathEnsureACL(conn, def) < 0)
|
||||
goto cleanup;
|
||||
return NULL;
|
||||
|
||||
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
|
||||
virStoragePoolObjEndAPI(&obj);
|
||||
@ -1678,8 +1665,6 @@ storagePoolLookupByTargetPath(virConnectPtr conn,
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(cleanpath);
|
||||
return pool;
|
||||
}
|
||||
|
||||
@ -2206,40 +2191,31 @@ virStorageVolPoolRefreshDataFree(void *opaque)
|
||||
static int
|
||||
virStorageBackendPloopRestoreDesc(char *path)
|
||||
{
|
||||
int ret = -1;
|
||||
char *refresh_tool = NULL;
|
||||
char *desc = NULL;
|
||||
VIR_AUTOPTR(virCommand) cmd = NULL;
|
||||
VIR_AUTOFREE(char *) refresh_tool = NULL;
|
||||
VIR_AUTOFREE(char *) desc = NULL;
|
||||
|
||||
if (virAsprintf(&desc, "%s/DiskDescriptor.xml", path) < 0)
|
||||
return ret;
|
||||
return -1;
|
||||
|
||||
if (virFileRemove(desc, 0, 0) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("refresh ploop failed:"
|
||||
" unable to delete DiskDescriptor.xml"));
|
||||
goto cleanup;
|
||||
return -1;
|
||||
}
|
||||
|
||||
refresh_tool = virFindFileInPath("ploop");
|
||||
if (!refresh_tool) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("unable to find ploop, please install ploop tools"));
|
||||
goto cleanup;
|
||||
return -1;
|
||||
}
|
||||
|
||||
cmd = virCommandNewArgList(refresh_tool, "restore-descriptor",
|
||||
path, NULL);
|
||||
virCommandAddArgFormat(cmd, "%s/root.hds", path);
|
||||
if (virCommandRun(cmd, NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(refresh_tool);
|
||||
VIR_FREE(desc);
|
||||
return ret;
|
||||
return virCommandRun(cmd, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user