提交 a1703557 编写于 作者: J John Ferlan

storage: Pull volume removal from pool in storageVolDeleteInternal

Create a helper function to remove volume from the pool.
上级 2265e7dd
...@@ -1619,6 +1619,25 @@ storagePoolLookupByTargetPath(virConnectPtr conn, ...@@ -1619,6 +1619,25 @@ storagePoolLookupByTargetPath(virConnectPtr conn,
} }
static void
storageVolRemoveFromPool(virStoragePoolObjPtr pool,
virStorageVolDefPtr vol)
{
size_t i;
for (i = 0; i < pool->volumes.count; i++) {
if (pool->volumes.objs[i] == vol) {
VIR_INFO("Deleting volume '%s' from storage pool '%s'",
vol->name, pool->def->name);
virStorageVolDefFree(vol);
VIR_DELETE_ELEMENT(pool->volumes.objs, i, pool->volumes.count);
break;
}
}
}
static int static int
storageVolDeleteInternal(virStorageVolPtr obj, storageVolDeleteInternal(virStorageVolPtr obj,
virStorageBackendPtr backend, virStorageBackendPtr backend,
...@@ -1627,7 +1646,6 @@ storageVolDeleteInternal(virStorageVolPtr obj, ...@@ -1627,7 +1646,6 @@ storageVolDeleteInternal(virStorageVolPtr obj,
unsigned int flags, unsigned int flags,
bool updateMeta) bool updateMeta)
{ {
size_t i;
int ret = -1; int ret = -1;
if (!backend->deleteVol) { if (!backend->deleteVol) {
...@@ -1651,16 +1669,7 @@ storageVolDeleteInternal(virStorageVolPtr obj, ...@@ -1651,16 +1669,7 @@ storageVolDeleteInternal(virStorageVolPtr obj,
} }
} }
for (i = 0; i < pool->volumes.count; i++) { storageVolRemoveFromPool(pool, vol);
if (pool->volumes.objs[i] == vol) {
VIR_INFO("Deleting volume '%s' from storage pool '%s'",
vol->name, pool->def->name);
virStorageVolDefFree(vol);
VIR_DELETE_ELEMENT(pool->volumes.objs, i, pool->volumes.count);
break;
}
}
ret = 0; ret = 0;
cleanup: cleanup:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册