[Openais] trunk patch - unlock global serializer mutex

renayama19661014 at ybb.ne.jp renayama19661014 at ybb.ne.jp
Sun Jun 20 22:19:18 PDT 2010


Hi Steven,

I tested your patch on Esxi.
The problem that the guest whom I reported cannot stop was broken off by your patch.

 * It is not used 100% for the CPU of the guest. 
 * And corosync stops quickly.

We look forward to the next release of corosync.

Best Regards,
Hideo Yamauchi.

--- Steven Dake <sdake at redhat.com> wrote:

> The global serializer mutex is left in a locked state during the 
> shutdown process.  At about the same time, the timer system expires a 
> timer (which takes the global serializer lock) leading to either high 
> CPU use on multiprocessor during shutdown or deadlock on uniprocessor.
> 
> Regards
> -steve
> > Index: exec/main.c
> ===================================================================
> --- exec/main.c	(revision 2948)
> +++ exec/main.c	(working copy)
> @@ -139,6 +139,8 @@
>  
>  static sem_t corosync_exit_sem;
>  
> +static void serialize_unlock (void);
> +
>  hdb_handle_t corosync_poll_handle_get (void)
>  {
>  	return (corosync_poll_handle);
> @@ -157,6 +159,13 @@
>  
>  static void unlink_all_completed (void)
>  {
> +	/*
> +	 * The schedwrk_do API takes the global serializer lock
> +	 * but doesn't release it because this exit callback is called
> +	 * before it finishes.  Since we know we are exiting, we unlock it
> +	 * here
> +	 */
> +	serialize_unlock ();
>  	poll_stop (corosync_poll_handle);
>  	totempg_finalize ();
>  
> > _______________________________________________
> Openais mailing list
> Openais at lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/openais



More information about the Openais mailing list