On Tue, Sep 08, 2009 at 04:33:24PM +0200, Daniel Veillard wrote: > On Wed, Sep 02, 2009 at 02:11:50PM +0100, Daniel P. Berrange wrote: > > Fix all thread locking bugs reported by object-locking test > > case. > > > > NB, some of the driver locking is getting too coarse. Driver > > mutexes really need to be turned into RW locks instead to > > significantly increase concurrency. > > > > * src/lxc_driver.c: Fix useof driver when unlocked in the methods > > lxcDomainGetInfo, lxcSetSchedulerParameters, and > > lxcGetSchedulerParameters > > * src/opennebula/one_driver.c: Fix missing unlock in oneDomainUndefine. > > Fix use of driver when unlocked in oneDomainGetInfo, > > oneGetOSType, oneDomainShutdown > > * src/qemu_driver.c: Fix use of driver when unlocked in > > qemudDomainSavem, qemuGetSchedulerType, qemuSetSchedulerParameters > > and qemuGetSchedulerParameters > > * src/storage_driver.c: Re-work storagePoolCreate to avoid bogus > > lock checking warning. Re-work storageVolumeCreateXMLFrom to > > remove a potential NULL de-reference & avoid bogus lock check > > warnings > > * src/test.c: Remove testDomainAssignDef since it break lock chekc > > warnings. > > * tests/object-locking.ml: Add oneDriverLock, oneDriverUnlock > > and one_driver_t methods/types to allow lock checking on the > > OpenNebula drivers > > diff --git a/src/lxc_driver.c b/src/lxc_driver.c > > index bd0cf0e..0ec1e92 100644 > > --- a/src/lxc_driver.c > > +++ b/src/lxc_driver.c > > @@ -439,7 +439,6 @@ static int lxcDomainGetInfo(virDomainPtr dom, > > > > lxcDriverLock(driver); > > vm = virDomainFindByUUID(&driver->domains, dom->uuid); > > - lxcDriverUnlock(driver); > > > > if (!vm) { > > lxcError(dom->conn, dom, VIR_ERR_INVALID_DOMAIN, > > @@ -470,6 +469,7 @@ static int lxcDomainGetInfo(virDomainPtr dom, > > ret = 0; > > > > cleanup: > > + lxcDriverUnlock(driver); > > if (cgroup) > > virCgroupFree(&cgroup); > > if (vm) > > I'm just surprized by this series of fixes, I though we needed to drop > locks when calling into errors routines like lxcError ? No, we only need to drop the virConnect mutex - the driver/domain mutexes can be held without trouble. I really need to write some docs for this mutex stuff .... Regards, Daniel -- |: 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 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list