}
+static void
+storagePoolRefreshFailCleanup(virStorageBackendPtr backend,
+ virStoragePoolObjPtr obj,
+ const char *stateFile)
+{
+ if (stateFile)
+ ignore_value(unlink(stateFile));
+ if (backend->stopPool)
+ backend->stopPool(obj);
+}
+
+
/**
* virStoragePoolUpdateInactive:
* @poolptr: pointer to a variable holding the pool object pointer
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to initialize storage pool '%s': %s"),
def->name, virGetLastErrorMessage());
+ ignore_value(unlink(stateFile));
active = false;
}
if (active) {
virStoragePoolObjClearVols(obj);
if (backend->refreshPool(obj) < 0) {
- if (backend->stopPool)
- backend->stopPool(obj);
+ storagePoolRefreshFailCleanup(backend, obj, stateFile);
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to restart storage pool '%s': %s"),
def->name, virGetLastErrorMessage());
if (!virStoragePoolObjIsActive(obj))
virStoragePoolUpdateInactive(&obj);
- if (!active)
- ignore_value(unlink(stateFile));
VIR_FREE(stateFile);
return;
if (!stateFile ||
virStoragePoolSaveState(stateFile, def) < 0 ||
backend->refreshPool(obj) < 0) {
- if (stateFile)
- unlink(stateFile);
- if (backend->stopPool)
- backend->stopPool(obj);
+ storagePoolRefreshFailCleanup(backend, obj, stateFile);
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to autostart storage pool '%s': %s"),
def->name, virGetLastErrorMessage());
virStoragePoolObjClearVols(obj);
if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 ||
backend->refreshPool(obj) < 0) {
- if (stateFile)
- unlink(stateFile);
- if (backend->stopPool)
- backend->stopPool(obj);
+ storagePoolRefreshFailCleanup(backend, obj, stateFile);
goto error;
}
virStoragePoolObjClearVols(obj);
if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 ||
backend->refreshPool(obj) < 0) {
- if (stateFile)
- unlink(stateFile);
- if (backend->stopPool)
- backend->stopPool(obj);
+ storagePoolRefreshFailCleanup(backend, obj, stateFile);
goto cleanup;
}
if (backend->refreshPool(obj) < 0) {
char *stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
- if (stateFile)
- unlink(stateFile);
- if (backend->stopPool)
- backend->stopPool(obj);
+ storagePoolRefreshFailCleanup(backend, obj, stateFile);
VIR_FREE(stateFile);
event = virStoragePoolEventLifecycleNew(def->name,