All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Gortmaker <paul.gortmaker@windriver.com>
To: <davem@davemloft.net>
Cc: <netdev@vger.kernel.org>, <allan.stephens@windriver.com>,
	<ying.xue@windriver.com>
Subject: [PATCH net-next 04/16] tipc: Update node-scope publications when network address is assigned
Date: Fri, 20 Apr 2012 17:05:12 -0400	[thread overview]
Message-ID: <1334955924-907-5-git-send-email-paul.gortmaker@windriver.com> (raw)
In-Reply-To: <1334955924-907-1-git-send-email-paul.gortmaker@windriver.com>

From: Allan Stephens <allan.stephens@windriver.com>

Ensures that node-scope name publications that exist prior to the
configuration of a node's network address are properly re-initialized
with that address when it is assigned. TIPC's node-scope publications
are now tracked using a publications list like the lists used for
cluster-scope and zone-scope publications so they can be easily updated
when required.

The inclusion of node scope name publications in a conventional publication
list means that they must now also be withdrawn, just like cluster and zone
scope publications are currently withdrawn.  So some conditional tests on
scope ==/!= TIPC_NODE_SCOPE are inserted/removed accordingly.

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
 net/tipc/name_distr.c |   14 ++++++++++----
 net/tipc/name_table.c |    5 ++---
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/net/tipc/name_distr.c b/net/tipc/name_distr.c
index 8751ea5..211c172 100644
--- a/net/tipc/name_distr.c
+++ b/net/tipc/name_distr.c
@@ -160,6 +160,9 @@ void tipc_named_publish(struct publication *publ)
 	list_add_tail(&publ->local_list, &publ_lists[publ->scope]->list);
 	publ_lists[publ->scope]->size++;
 
+	if (publ->scope == TIPC_NODE_SCOPE)
+		return;
+
 	buf = named_prepare_buf(PUBLICATION, ITEM_SIZE, 0);
 	if (!buf) {
 		warn("Publication distribution failure\n");
@@ -183,6 +186,9 @@ void tipc_named_withdraw(struct publication *publ)
 	list_del(&publ->local_list);
 	publ_lists[publ->scope]->size--;
 
+	if (publ->scope == TIPC_NODE_SCOPE)
+		return;
+
 	buf = named_prepare_buf(WITHDRAWAL, ITEM_SIZE, 0);
 	if (!buf) {
 		warn("Withdrawal distribution failure\n");
@@ -349,11 +355,11 @@ void tipc_named_recv(struct sk_buff *buf)
 }
 
 /**
- * tipc_named_reinit - re-initialize local publication list
+ * tipc_named_reinit - re-initialize local publications
  *
  * This routine is called whenever TIPC networking is enabled.
- * All existing publications by this node that have "cluster" or "zone" scope
- * are updated to reflect the node's new network address.
+ * All name table entries published by this node are updated to reflect
+ * the node's new network address.
  */
 
 void tipc_named_reinit(void)
@@ -363,7 +369,7 @@ void tipc_named_reinit(void)
 
 	write_lock_bh(&tipc_nametbl_lock);
 
-	for (scope = TIPC_ZONE_SCOPE; scope <= TIPC_CLUSTER_SCOPE; scope++)
+	for (scope = TIPC_ZONE_SCOPE; scope <= TIPC_NODE_SCOPE; scope++)
 		list_for_each_entry(publ, &publ_lists[scope]->list, local_list)
 			publ->node = tipc_own_addr;
 
diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c
index c6a1ae3..bd80d80 100644
--- a/net/tipc/name_table.c
+++ b/net/tipc/name_table.c
@@ -698,7 +698,7 @@ struct publication *tipc_nametbl_publish(u32 type, u32 lower, u32 upper,
 	table.local_publ_count++;
 	publ = tipc_nametbl_insert_publ(type, lower, upper, scope,
 				   tipc_own_addr, port_ref, key);
-	if (publ && (scope != TIPC_NODE_SCOPE))
+	if (likely(publ))
 		tipc_named_publish(publ);
 	write_unlock_bh(&tipc_nametbl_lock);
 	return publ;
@@ -716,8 +716,7 @@ int tipc_nametbl_withdraw(u32 type, u32 lower, u32 ref, u32 key)
 	publ = tipc_nametbl_remove_publ(type, lower, tipc_own_addr, ref, key);
 	if (likely(publ)) {
 		table.local_publ_count--;
-		if (publ->scope != TIPC_NODE_SCOPE)
-			tipc_named_withdraw(publ);
+		tipc_named_withdraw(publ);
 		write_unlock_bh(&tipc_nametbl_lock);
 		list_del_init(&publ->pport_list);
 		kfree(publ);
-- 
1.7.9.3

  parent reply	other threads:[~2012-04-20 21:05 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-20 21:05 [PATCH net-next 00/16] tipc: publication lists and zero node handling Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 01/16] tipc: introduce publication lists struct Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 02/16] tipc: Factor out name publication code to a separate function Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 03/16] tipc: Separate cluster-scope and zone-scope names into distinct lists Paul Gortmaker
2012-04-20 21:05 ` Paul Gortmaker [this message]
2012-04-20 21:05 ` [PATCH net-next 05/16] tipc: Don't record failed publication attempt as a success Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 06/16] tipc: Add routines for safe checking of node's network address Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 07/16] tipc: Ensure network address change doesn't impact name table updates Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 08/16] tipc: Optimize re-initialization of port message header templates Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 09/16] tipc: Ensure network address change doesn't impact new port Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 10/16] tipc: delete duplicate peerport/peernode helper functions Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 11/16] tipc: Ensure network address change doesn't impact local connections Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 12/16] tipc: take lock while updating node network address Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 13/16] tipc: properly handle off-node send requests with invalid addr Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 14/16] tipc: handle <0.0.0> as an alias for this node on outgoing msgs Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 15/16] tipc: Ensure network address change doesn't impact rejected message Paul Gortmaker
2012-04-20 21:05 ` [PATCH net-next 16/16] tipc: Ensure network address change doesn't impact configuration service Paul Gortmaker
2012-04-21  0:45 ` [PATCH net-next 00/16] tipc: publication lists and zero node handling David Miller
2012-04-23 14:49   ` [PATCH net-next] tipc: remove inline instances from C source files Paul Gortmaker
2012-04-24  4:41     ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1334955924-907-5-git-send-email-paul.gortmaker@windriver.com \
    --to=paul.gortmaker@windriver.com \
    --cc=allan.stephens@windriver.com \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=ying.xue@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.