{
virStoragePoolDef *def = virStoragePoolObjGetDef(obj);
virStorageBackend *backend;
- bool started = false;
+ g_autofree char *stateFile = NULL;
if (!(backend = virStorageBackendForType(def->type)))
return;
- if (virStoragePoolObjIsAutostart(obj) &&
- !virStoragePoolObjIsActive(obj)) {
+ if (!virStoragePoolObjIsAutostart(obj))
+ return;
- virStoragePoolObjSetStarting(obj, true);
- if (backend->startPool &&
- backend->startPool(obj) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Failed to autostart storage pool '%s': %s"),
- def->name, virGetLastErrorMessage());
- goto cleanup;
- }
- started = true;
+ if (virStoragePoolObjIsActive(obj))
+ return;
+
+ VIR_DEBUG("autostarting storage pool '%s'", def->name);
+
+ virStoragePoolObjSetStarting(obj, true);
+
+ if (backend->startPool &&
+ backend->startPool(obj) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Failed to autostart storage pool '%s': %s"),
+ def->name, virGetLastErrorMessage());
+ goto cleanup;
}
- if (started) {
- g_autofree char *stateFile = NULL;
+ stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
- stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
- if (!stateFile ||
- virStoragePoolSaveState(stateFile, def) < 0 ||
- storagePoolRefreshImpl(backend, obj, stateFile) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Failed to autostart storage pool '%s': %s"),
- def->name, virGetLastErrorMessage());
- } else {
- virStoragePoolObjSetActive(obj, true);
- }
+ if (!stateFile ||
+ virStoragePoolSaveState(stateFile, def) < 0 ||
+ storagePoolRefreshImpl(backend, obj, stateFile) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Failed to autostart storage pool '%s': %s"),
+ def->name, virGetLastErrorMessage());
+ } else {
+ virStoragePoolObjSetActive(obj, true);
}
cleanup: