From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Mon, 04 Jun 2007 09:50:18 +0100 Subject: [Cluster-devel] Re: [PATCH] dlm: fix socket shutdown In-Reply-To: <20070601150726.GA31229@redhat.com> References: <20070601150726.GA31229@redhat.com> Message-ID: <1180947018.25918.118.camel@quoit> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 > > 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 > Signed-Off-By: David Teigland > > 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); >