[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] Re: [PATCH] dlm: fix socket shutdown



Hi,

Now applied to the -nmw git tree. Thanks,

Steve.

On Fri, 2007-06-01 at 10:07 -0500, David Teigland wrote:
> From: Patrick Caulfield <pcaulfie redhat com>
> 
> This patch clears the user_data of active sockets as part of cleanup.
> This prevents any late-arriving data from trying to add jobs to the work
> queue while we are tidying up.
> 
> Signed-Off-By: Patrick Caulfield <pcaulfie redhat com>
> Signed-Off-By: David Teigland <teigland redhat com>
> 
> Index: linux-quilt/fs/dlm/lowcomms.c
> ===================================================================
> --- linux-quilt.orig/fs/dlm/lowcomms.c	2007-05-25 14:56:42.000000000 -0500
> +++ linux-quilt/fs/dlm/lowcomms.c	2007-06-01 10:04:03.000000000 -0500
> @@ -260,7 +260,7 @@
>  static void lowcomms_data_ready(struct sock *sk, int count_unused)
>  {
>  	struct connection *con = sock2con(sk);
> -	if (!test_and_set_bit(CF_READ_PENDING, &con->flags))
> +	if (con && !test_and_set_bit(CF_READ_PENDING, &con->flags))
>  		queue_work(recv_workqueue, &con->rwork);
>  }
>  
> @@ -268,7 +268,7 @@
>  {
>  	struct connection *con = sock2con(sk);
>  
> -	if (!test_and_set_bit(CF_WRITE_PENDING, &con->flags))
> +	if (con && !test_and_set_bit(CF_WRITE_PENDING, &con->flags))
>  		queue_work(send_workqueue, &con->swork);
>  }
>  
> @@ -1400,8 +1400,11 @@
>  	down(&connections_lock);
>  	for (i = 0; i <= max_nodeid; i++) {
>  		con = __nodeid2con(i, 0);
> -		if (con)
> +		if (con) {
>  			con->flags |= 0xFF;
> +			if (con->sock)
> +				con->sock->sk->sk_user_data = NULL;
> +		}
>  	}
>  	up(&connections_lock);
>  


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]