]> xenbits.xensource.com Git - libvirt.git/commitdiff
storagePoolDefineXML: prefer using newDef to save config file
authorShichangkuo <shi.changkuo@h3c.com>
Tue, 10 Jul 2018 07:15:24 +0000 (07:15 +0000)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 11 Jul 2018 09:22:26 +0000 (11:22 +0200)
When re-defining an active storage pool, due to a bug the config
file on disk is not changed. This is because we are passing old
definition instead of new one to virStoragePoolObjSaveDef.
This issue was introduced by bfcd8fc9,

Signed-off-by: Changkuo Shi <shi.changkuo@h3c.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/storage/storage_driver.c

index 254818e3089393099186bc214874bd1f4866d0db..8070d159ea04703ab675d78517b0ad91c366bfb7 100644 (file)
@@ -810,13 +810,14 @@ storagePoolDefineXML(virConnectPtr conn,
 
     if (!(obj = virStoragePoolObjAssignDef(driver->pools, newDef)))
         goto cleanup;
-    newDef = NULL;
+    newDef = virStoragePoolObjGetNewDef(obj);
     def = virStoragePoolObjGetDef(obj);
 
-    if (virStoragePoolObjSaveDef(driver, obj, def) < 0) {
+    if (virStoragePoolObjSaveDef(driver, obj, newDef ? newDef : def) < 0) {
         virStoragePoolObjRemove(driver->pools, obj);
         virObjectUnref(obj);
         obj = NULL;
+        newDef = NULL;
         goto cleanup;
     }
 
@@ -826,6 +827,7 @@ storagePoolDefineXML(virConnectPtr conn,
 
     VIR_INFO("Defining storage pool '%s'", def->name);
     pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
+    newDef = NULL;
 
  cleanup:
     virObjectEventStateQueue(driver->storageEventState, event);