storagePoolCreateXML: Don't lose persistent storage on failed create

If there's a persistent storage and user tries to start a new one
with the same name and UUID (e.g. to test new configuration) it
may happen that upon failure we lose the persistent defintion.
Fortunately, we don't remove it from the disk only from the
internal list of the pools.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2019-05-24 16:35:45 +02:00
parent 1340327f48
commit 9342bc626b

View File

@ -755,6 +755,7 @@ storagePoolCreateXML(virConnectPtr conn,
goto cleanup;
if (!(obj = virStoragePoolObjListAdd(driver->pools, newDef,
VIR_STORAGE_POOL_OBJ_LIST_ADD_LIVE |
VIR_STORAGE_POOL_OBJ_LIST_ADD_CHECK_LIVE)))
goto cleanup;
newDef = NULL;
@ -801,7 +802,7 @@ storagePoolCreateXML(virConnectPtr conn,
return pool;
error:
virStoragePoolObjRemove(driver->pools, obj);
virStoragePoolUpdateInactive(obj);
goto cleanup;
}