Rather than 3 separate, but same 4 lines of code - let's create an
error label to make a common error path. This will help shortly when
the error path changes slightly.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/storage/storage_driver.c | 27 +++++++++++----------------
1 file changed, 11 insertions(+), 16 deletions(-)
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index d5e38af5a..6276545eb 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -744,22 +744,14 @@ storagePoolCreateXML(virConnectPtr conn,
if (build_flags ||
(flags & VIR_STORAGE_POOL_CREATE_WITH_BUILD)) {
- if (backend->buildPool(obj, build_flags) < 0) {
- virStoragePoolObjRemove(driver->pools, obj);
- virObjectUnref(obj);
- obj = NULL;
- goto cleanup;
- }
+ if (backend->buildPool(obj, build_flags) < 0)
+ goto error;
}
}
if (backend->startPool &&
- backend->startPool(obj) < 0) {
- virStoragePoolObjRemove(driver->pools, obj);
- virObjectUnref(obj);
- obj = NULL;
- goto cleanup;
- }
+ backend->startPool(obj) < 0)
+ goto error;
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
@@ -770,10 +762,7 @@ storagePoolCreateXML(virConnectPtr conn,
unlink(stateFile);
if (backend->stopPool)
backend->stopPool(obj);
- virStoragePoolObjRemove(driver->pools, obj);
- virObjectUnref(obj);
- obj = NULL;
- goto cleanup;
+ goto error;
}
event = virStoragePoolEventLifecycleNew(def->name,
@@ -793,6 +782,12 @@ storagePoolCreateXML(virConnectPtr conn,
virObjectEventStateQueue(driver->storageEventState, event);
virStoragePoolObjEndAPI(&obj);
return pool;
+
+ error:
+ virStoragePoolObjRemove(driver->pools, obj);
+ virObjectUnref(obj);
+ obj = NULL;
+ goto cleanup;
}
static virStoragePoolPtr
--
2.13.6