[libvirt] FYI: Fixed multiple test driver crashes/flaws

Daniel P. Berrange berrange at redhat.com
Sun Dec 7 20:48:04 UTC 2008


The virt-install test suite exposed a number of bugs in the test
driver storage APIs, partly due to my threading changes. There
was one deadlock (calling unneccessary PoolRefresh op), one
crash (deferencing a variable we just set to NULL), and integer
long long overflow on 32-bit, and missing return value

I've committed the following patch which fixes these and makes
virt=install test suite work again

Daniel

diff -u -p -r1.103 -r1.106
--- src/test.c	4 Dec 2008 21:00:50 -0000	1.103
+++ src/test.c	7 Dec 2008 20:45:28 -0000	1.106
@@ -191,7 +191,7 @@ static const char *defaultPoolXML =
 "  </target>"
 "</pool>";
 
-static const unsigned long long defaultPoolCap = (100 * 1024 * 1024 * 1024ul);
+static const unsigned long long defaultPoolCap = (100 * 1024 * 1024 * 1024ull);
 static const unsigned long long defaultPoolAlloc = 0;
 
 static int testStoragePoolObjSetDefaults(virStoragePoolObjPtr pool);
@@ -2323,9 +2323,6 @@ no_memory:
     return -1;
 }
 
-static int
-testStoragePoolRefresh(virStoragePoolPtr obj,
-                       unsigned int flags ATTRIBUTE_UNUSED);
 
 static int
 testStoragePoolStart(virStoragePoolPtr pool,
@@ -2350,8 +2347,6 @@ testStoragePoolStart(virStoragePoolPtr p
         goto cleanup;
     }
 
-    if (testStoragePoolRefresh(pool, 0) == 0)
-        goto cleanup;
     privpool->active = 1;
     ret = 0;
 
@@ -2506,6 +2501,7 @@ testStoragePoolBuild(virStoragePoolPtr p
                   _("storage pool '%s' is already active"), pool->name);
         goto cleanup;
     }
+    ret = 0;
 
 cleanup:
     if (privpool)
@@ -3001,10 +2997,10 @@ testStorageVolumeCreateXML(virStoragePoo
                                 privpool->def->allocation);
 
     privpool->volumes.objs[privpool->volumes.count++] = privvol;
-    privvol = NULL;
 
     ret = virGetStorageVol(pool->conn, privpool->def->name,
                            privvol->name, privvol->key);
+    privvol = NULL;
 
 cleanup:
     virStorageVolDefFree(privvol);


-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list