Re: [ClusterLabs] Antw: Re: Antw: Re: [Cluster-devel] DLM connection channel switch take too long time (> 5mins)

2018-03-13 Thread Guoqing Jiang



On 03/13/2018 03:09 PM, Ulrich Windl wrote:



Guoqing Jiang  schrieb am 13.03.2018 um 05:00 in Nachricht

<87a8e0e7-63f3-2329-6598-1fa80b1b1...@suse.com>:


On 03/08/2018 07:24 PM, Ulrich Windl wrote:

Hi!

What surprises me most is that a connect(...O_NONBLOCK) actually blocks:

EINPROGRESS
The  socket  is  non-blocking  and the connection cannot be

com-

pleted immediately.


Maybe it is because that the socket is created by sock_create_kern, and
O_NONBLOCK flag is not worked  since __sctp_connect has the following
description.

 /* in-kernel sockets don't generally have a file allocated to them
   * if all they do is call sock_create_kern().
   */
  if (sk->sk_socket->file)
  f_flags = sk->sk_socket->file->f_flags;

  timeo = sock_sndtimeo(sk, f_flags & O_NONBLOCK);

But O_NONBLOCK is still passed to sock_sndtimeo() (unless the intention was "f_flags 
& ~O_NONBLOCK").



If I am not reading wrong, the O_NONBLOCK doesn't have effective above
since f_flags is still 0.

So, in this case, timeo is set to sk->sk_sndtimeo. In sctp_wait_for_connect
you also can see nonblock is only work when timeo is set to 0.

            if (!*timeo_p)
    goto do_nonblock;


Thanks,
Guoqing
___
Users mailing list: Users@clusterlabs.org
https://lists.clusterlabs.org/mailman/listinfo/users

Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://bugs.clusterlabs.org


[ClusterLabs] Antw: Re: Antw: Re: [Cluster-devel] DLM connection channel switch take too long time (> 5mins)

2018-03-13 Thread Ulrich Windl


>>> Guoqing Jiang  schrieb am 13.03.2018 um 05:00 in Nachricht
<87a8e0e7-63f3-2329-6598-1fa80b1b1...@suse.com>:

> 
> On 03/08/2018 07:24 PM, Ulrich Windl wrote:
>> Hi!
>>
>> What surprises me most is that a connect(...O_NONBLOCK) actually blocks:
>>
>> EINPROGRESS
>>The  socket  is  non-blocking  and the connection cannot be 
> com-
>>pleted immediately.
>>
> 
> Maybe it is because that the socket is created by sock_create_kern, and
> O_NONBLOCK flag is not worked  since __sctp_connect has the following
> description.
> 
> /* in-kernel sockets don't generally have a file allocated to them
>   * if all they do is call sock_create_kern().
>   */
>  if (sk->sk_socket->file)
>  f_flags = sk->sk_socket->file->f_flags;
> 
>  timeo = sock_sndtimeo(sk, f_flags & O_NONBLOCK);

But O_NONBLOCK is still passed to sock_sndtimeo() (unless the intention was 
"f_flags & ~O_NONBLOCK").

> 
> Thanks,
> Guoqing
> ___
> Users mailing list: Users@clusterlabs.org 
> https://lists.clusterlabs.org/mailman/listinfo/users 
> 
> Project Home: http://www.clusterlabs.org 
> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf 
> Bugs: http://bugs.clusterlabs.org

___
Users mailing list: Users@clusterlabs.org
https://lists.clusterlabs.org/mailman/listinfo/users

Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://bugs.clusterlabs.org