From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Mon, 20 Aug 2007 15:56:11 +0100 Subject: [Cluster-devel] [PATCH] dlm: bz#251179 Fix lowcomms socket closing In-Reply-To: <46C9A192.5000704@redhat.com> References: <46C9A192.5000704@redhat.com> Message-ID: <1187621771.8765.917.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 in the -nmw git tree. Thanks, Steve. On Mon, 2007-08-20 at 15:13 +0100, Patrick Caulfield wrote: > This patch fixes the slight mess made in lowcomms closing by previous patches > and fixes all sorts of DLM hangs. > > Signed-Off-By: Patrick Caulfield > > plain text document attachment (lowcomms-close-patch.stevew) > --- gfs2-2.6-nmw/fs/dlm/lowcomms.c.orig 2007-08-20 15:05:48.000000000 +0100 > +++ gfs2-2.6-nmw/fs/dlm/lowcomms.c 2007-08-20 15:07:00.000000000 +0100 > @@ -334,18 +334,8 @@ static void close_connection(struct conn > con->rx_page = NULL; > } > > - /* If we are an 'othercon' then NULL the pointer to us > - from the parent and tidy ourself up */ > - if (test_bit(CF_IS_OTHERCON, &con->flags)) { > - struct connection *parent = __nodeid2con(con->nodeid, 0); > - parent->othercon = NULL; > - kmem_cache_free(con_cache, con); > - } > - else { > - /* Parent connections get reused */ > - con->retries = 0; > - mutex_unlock(&con->sock_mutex); > - } > + con->retries = 0; > + mutex_unlock(&con->sock_mutex); > } > > /* We only send shutdown messages to nodes that are not part of the cluster */ > @@ -731,6 +721,8 @@ static int tcp_accept_from_sock(struct c > INIT_WORK(&othercon->swork, process_send_sockets); > INIT_WORK(&othercon->rwork, process_recv_sockets); > set_bit(CF_IS_OTHERCON, &othercon->flags); > + } > + if (!othercon->sock) { > newcon->othercon = othercon; > othercon->sock = newsock; > newsock->sk->sk_user_data = othercon;