[libvirt] [PATCH] [RFC] nwfilter: resolve deadlock between VM operations and filter update

Daniel Veillard veillard at redhat.com
Thu Oct 7 14:53:57 UTC 2010


On Thu, Oct 07, 2010 at 10:06:55AM -0400, Stefan Berger wrote:
>  On 10/07/2010 09:52 AM, Daniel Veillard wrote:
> >On Wed, Oct 06, 2010 at 05:56:36PM -0400, Stefan Berger wrote:
> >>  V2:
> >>   remove the locks from qemudVMFilterRebuild&  umlVMFilterRebuild
> >
> >>For now I want to put this out as an RFC patch. I have tested it by
> >>'stretching' the critical section after the define/undefine
> >>functions each lock the filter so I can (easily) concurrently
> >>execute another VM operation (suspend,start). That code is in this
> >>patch and if you want you can de-activate it. It seems to work ok
> >>and operations are being blocked while the update is being done.
> >>I still also want to verify the other assumption above that locking
> >>filter and qemu_domain always has a preceding qemu_driver lock.
> >   I looked at the patch and the only thing that need to be cleaned up
> >is the stretching blocki below, otherwise looks fine to me.
> >
> Yes, I'll remove that.

 sure, it was an RFC :-)

> >>+if (true) {
> >>+    fprintf(stderr,"sleep in %s\n", __FUNCTION__);
> >>+    sleep(CRITICAL_SECTION_STRETCH);
> >>+    fprintf(stderr,"continue in %s\n", __FUNCTION__);
> >>+}
> >>+
> >   It would be good to have some ways to exercise all code paths
> >in the locking (okay error handling specific paths aside because
> >it's really hard), before applying.
> >
> It will take some time, but I'll try to write a TCK test that does
> something like Soren was testing:
> 
> - concurrently create/destroy 2 vms
> - concurrently modify their filters
> - plus occasionally shoot a SIGHUP at libvirt ( if possible )
> 
> That would test some of the code paths.

  That would be nice, yes

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list