mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
storage: Don't leave stale state file if pool startup fails
After pool startup we call refreshPool(). If that fails, we leave a stale pool state file hanging around. Hit this trying to create a pool with qemu:///session containing root owned files.
This commit is contained in:
parent
b29aff322f
commit
c180a3dcf7
@ -180,6 +180,8 @@ storageDriverAutostart(void)
|
|||||||
virStoragePoolSaveState(stateFile, pool->def) < 0 ||
|
virStoragePoolSaveState(stateFile, pool->def) < 0 ||
|
||||||
backend->refreshPool(conn, pool) < 0) {
|
backend->refreshPool(conn, pool) < 0) {
|
||||||
virErrorPtr err = virGetLastError();
|
virErrorPtr err = virGetLastError();
|
||||||
|
if (stateFile)
|
||||||
|
unlink(stateFile);
|
||||||
if (backend->stopPool)
|
if (backend->stopPool)
|
||||||
backend->stopPool(conn, pool);
|
backend->stopPool(conn, pool);
|
||||||
VIR_ERROR(_("Failed to autostart storage pool '%s': %s"),
|
VIR_ERROR(_("Failed to autostart storage pool '%s': %s"),
|
||||||
@ -690,6 +692,8 @@ storagePoolCreateXML(virConnectPtr conn,
|
|||||||
|
|
||||||
if (!stateFile || virStoragePoolSaveState(stateFile, pool->def) < 0 ||
|
if (!stateFile || virStoragePoolSaveState(stateFile, pool->def) < 0 ||
|
||||||
backend->refreshPool(conn, pool) < 0) {
|
backend->refreshPool(conn, pool) < 0) {
|
||||||
|
if (stateFile)
|
||||||
|
unlink(stateFile);
|
||||||
if (backend->stopPool)
|
if (backend->stopPool)
|
||||||
backend->stopPool(conn, pool);
|
backend->stopPool(conn, pool);
|
||||||
virStoragePoolObjRemove(&driver->pools, pool);
|
virStoragePoolObjRemove(&driver->pools, pool);
|
||||||
@ -856,6 +860,8 @@ storagePoolCreate(virStoragePoolPtr obj,
|
|||||||
|
|
||||||
if (!stateFile || virStoragePoolSaveState(stateFile, pool->def) < 0 ||
|
if (!stateFile || virStoragePoolSaveState(stateFile, pool->def) < 0 ||
|
||||||
backend->refreshPool(obj->conn, pool) < 0) {
|
backend->refreshPool(obj->conn, pool) < 0) {
|
||||||
|
if (stateFile)
|
||||||
|
unlink(stateFile);
|
||||||
if (backend->stopPool)
|
if (backend->stopPool)
|
||||||
backend->stopPool(obj->conn, pool);
|
backend->stopPool(obj->conn, pool);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user