* [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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.