提交 aced6b23 编写于 作者: P Peter Krempa

storage: driver: Split out code fixing pool state after deactivation

After a pool is made inactive the definition objects need to be updated
(if a new definition is prepared) and transient pools need to be
completely removed. Split out the code doing these steps into a separate
function for later reuse.
上级 894133a3
...@@ -77,6 +77,31 @@ static void storageDriverUnlock(void) ...@@ -77,6 +77,31 @@ static void storageDriverUnlock(void)
virMutexUnlock(&driver->lock); 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 static void
storagePoolUpdateState(virStoragePoolObjPtr pool) storagePoolUpdateState(virStoragePoolObjPtr pool)
{ {
...@@ -1071,14 +1096,7 @@ storagePoolDestroy(virStoragePoolPtr obj) ...@@ -1071,14 +1096,7 @@ storagePoolDestroy(virStoragePoolPtr obj)
pool->active = false; pool->active = false;
if (pool->configFile == NULL) { virStoragePoolUpdateInactive(&pool);
virStoragePoolObjRemove(&driver->pools, pool);
pool = NULL;
} else if (pool->newDef) {
virStoragePoolDefFree(pool->def);
pool->def = pool->newDef;
pool->newDef = NULL;
}
ret = 0; ret = 0;
...@@ -1200,10 +1218,8 @@ storagePoolRefresh(virStoragePoolPtr obj, ...@@ -1200,10 +1218,8 @@ storagePoolRefresh(virStoragePoolPtr obj,
0); 0);
pool->active = false; pool->active = false;
if (pool->configFile == NULL) { virStoragePoolUpdateInactive(&pool);
virStoragePoolObjRemove(&driver->pools, pool);
pool = NULL;
}
goto cleanup; goto cleanup;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册