virMutexUnlock(&driver->lock);
}
+
+/**
+ * virStoragePoolUpdateInactive:
+ * @poolptr: pointer to a variable holding the pool object pointer
+ *
+ * This function is supposed to be called after a pool becomes inactive. The
+ * function switches to the new config object for persistent pools. Inactive
+ * pools are removed.
+ */
+static void
+virStoragePoolUpdateInactive(virStoragePoolObjPtr *poolptr)
+{
+ virStoragePoolObjPtr pool = *poolptr;
+
+ if (pool->configFile == NULL) {
+ virStoragePoolObjRemove(&driver->pools, pool);
+ *poolptr = NULL;
+ } else if (pool->newDef) {
+ virStoragePoolDefFree(pool->def);
+ pool->def = pool->newDef;
+ pool->newDef = NULL;
+ }
+}
+
+
static void
storagePoolUpdateState(virStoragePoolObjPtr pool)
{
pool->active = false;
- if (pool->configFile == NULL) {
- virStoragePoolObjRemove(&driver->pools, pool);
- pool = NULL;
- } else if (pool->newDef) {
- virStoragePoolDefFree(pool->def);
- pool->def = pool->newDef;
- pool->newDef = NULL;
- }
+ virStoragePoolUpdateInactive(&pool);
ret = 0;
0);
pool->active = false;
- if (pool->configFile == NULL) {
- virStoragePoolObjRemove(&driver->pools, pool);
- pool = NULL;
- }
+ virStoragePoolUpdateInactive(&pool);
+
goto cleanup;
}