* [Cluster-devel] [PATCH] dlm: More othercon fixes @ 2007-08-02 13:58 Patrick Caulfield 2007-08-02 15:08 ` Steven Whitehouse 0 siblings, 1 reply; 3+ messages in thread From: Patrick Caulfield @ 2007-08-02 13:58 UTC (permalink / raw) To: cluster-devel.redhat.com The last patch to clean out 'othercon' structures only fixed half the problem. The attached addresses the other situations too, and fixes bz#238490 Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com> Patrick -------------- next part -------------- A non-text attachment was scrubbed... Name: othercon2.patch Type: text/x-patch Size: 2006 bytes Desc: not available URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20070802/963eacf9/attachment.bin> ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Cluster-devel] [PATCH] dlm: More othercon fixes 2007-08-02 13:58 [Cluster-devel] [PATCH] dlm: More othercon fixes Patrick Caulfield @ 2007-08-02 15:08 ` Steven Whitehouse 0 siblings, 0 replies; 3+ messages in thread From: Steven Whitehouse @ 2007-08-02 15:08 UTC (permalink / raw) To: cluster-devel.redhat.com Hi, On Thu, 2007-08-02 at 14:58 +0100, Patrick Caulfield wrote: > The last patch to clean out 'othercon' structures only fixed half the problem. > The attached addresses the other situations too, and fixes bz#238490 > > Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com> > > Patrick > > Now in the -nmw git tree. Thanks, Steve. ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Cluster-devel] [PATCH] [DLM] Clear othercon pointers when a connection is closed @ 2007-08-14 9:47 swhiteho 2007-08-14 9:47 ` [Cluster-devel] [PATCH] [DLM] More othercon fixes swhiteho 0 siblings, 1 reply; 3+ messages in thread From: swhiteho @ 2007-08-14 9:47 UTC (permalink / raw) To: cluster-devel.redhat.com From: Patrick Caulfield <pcaulfie@redhat.com> This patch clears the othercon pointer and frees the memory when a connnection is closed. This could cause a small memory leak when nodes leave the cluster. Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com> diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index dd36273..d15fd5f 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c @@ -327,6 +327,8 @@ static void close_connection(struct connection *con, bool and_other) if (con->othercon && and_other) { /* Will only re-enter once. */ close_connection(con->othercon, false); + kmem_cache_free(con_cache, con->othercon); + con->othercon = NULL; } if (con->rx_page) { __free_page(con->rx_page); -- 1.5.1.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Cluster-devel] [PATCH] [DLM] More othercon fixes 2007-08-14 9:47 [Cluster-devel] [PATCH] [DLM] Clear othercon pointers when a connection is closed swhiteho @ 2007-08-14 9:47 ` swhiteho 0 siblings, 0 replies; 3+ messages in thread From: swhiteho @ 2007-08-14 9:47 UTC (permalink / raw) To: cluster-devel.redhat.com From: Patrick Caulfield <pcaulfie@redhat.com> The last patch to clean out 'othercon' structures only fixed half the problem. The attached addresses the other situations too, and fixes bz#238490 Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com> diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index 631bc43..9e9d2e8 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c @@ -328,15 +328,24 @@ static void close_connection(struct connection *con, bool and_other) if (con->othercon && and_other) { /* Will only re-enter once. */ close_connection(con->othercon, false); - kmem_cache_free(con_cache, con->othercon); - con->othercon = NULL; } if (con->rx_page) { __free_page(con->rx_page); con->rx_page = NULL; } - con->retries = 0; - mutex_unlock(&con->sock_mutex); + + /* 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); + } } /* We only send shutdown messages to nodes that are not part of the cluster */ @@ -634,7 +643,7 @@ out_resched: out_close: mutex_unlock(&con->sock_mutex); - if (ret != -EAGAIN && !test_bit(CF_IS_OTHERCON, &con->flags)) { + if (ret != -EAGAIN) { close_connection(con, false); /* Reconnect when there is something to send */ } @@ -1125,8 +1134,6 @@ static int tcp_listen_for_all(void) log_print("Using TCP for communications"); - set_bit(CF_IS_OTHERCON, &con->flags); - sock = tcp_create_listen_sock(con, dlm_local_addr[0]); if (sock) { add_sock(sock, con); @@ -1410,7 +1417,7 @@ void dlm_lowcomms_stop(void) for (i = 0; i <= max_nodeid; i++) { con = __nodeid2con(i, 0); if (con) { - con->flags |= 0xFF; + con->flags |= 0x0F; if (con->sock) con->sock->sk->sk_user_data = NULL; } @@ -1426,8 +1433,6 @@ void dlm_lowcomms_stop(void) con = __nodeid2con(i, 0); if (con) { close_connection(con, true); - if (con->othercon) - kmem_cache_free(con_cache, con->othercon); kmem_cache_free(con_cache, con); } } -- 1.5.1.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-08-14 9:47 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-08-02 13:58 [Cluster-devel] [PATCH] dlm: More othercon fixes Patrick Caulfield 2007-08-02 15:08 ` Steven Whitehouse -- strict thread matches above, loose matches on Subject: below -- 2007-08-14 9:47 [Cluster-devel] [PATCH] [DLM] Clear othercon pointers when a connection is closed swhiteho 2007-08-14 9:47 ` [Cluster-devel] [PATCH] [DLM] More othercon fixes swhiteho
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).