diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 8dfa2497fc..97e0d9b3a0 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -194,38 +194,39 @@ storageDriverAutostartCallback(virStoragePoolObj *obj, { 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: