On 11/18/2010 05:16 AM, Stefan Berger wrote: > The IP address learning thread was causing a deadlock when it > instantiated a filter while a filter update/change was ongoing. The > reason for this was the ordering of locks due to the following calls > > virNWFilterUnlockFilterUpdates() > virNWFilterPoolObjFindByName() > > > + * Call this function while holding the NWFilter filter update lock > static int > __virNWFilterInstantiateFilter(virConnectPtr conn, I'm assuming that's a bogus line in your patch, > bool teardownOld, > @@ -823,23 +822,30 @@ _virNWFilterInstantiateFilter(virConnect > ? net->data.direct.linkdev > : NULL; > int ifindex; > + int rc; > > if (ifaceGetIndex(true, net->ifname, &ifindex)) > return 1; ... > + virNWFilterLockFilterUpdates(); > + > + rc = __virNWFilterInstantiateFilter(conn, ...especially given the fact that you grab the lock here, so __virNWFilterInstantiateFilter should NOT have the filter update lock in the caller. ACK, once you fix that compilation error due to the stray line. -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list