Commit 9d561949 authored by Ying Xue's avatar Ying Xue Committed by David S. Miller

tipc: remove TIPC_NAMES_GONE node flag

Since previously what all publications pertaining to the lost node
were removed from name table was finished in tasklet context
asynchronously, we need to TIPC_NAMES_GONE flag indicating whether
the node cleanup work is finished or not. But now as the cleanup work
has been finished when node lock is released, the flag becomes
meaningless for us.
Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
Reviewed-by: default avatarErik Hugne <erik.hugne@ericsson.com>
Reviewed-by: default avatarJon Maloy <jon.maloy@ericsson.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9db9fdd1
...@@ -273,18 +273,6 @@ static void node_established_contact(struct tipc_node *n_ptr) ...@@ -273,18 +273,6 @@ static void node_established_contact(struct tipc_node *n_ptr)
tipc_bclink_add_node(n_ptr->addr); tipc_bclink_add_node(n_ptr->addr);
} }
static void node_name_purge_complete(unsigned long node_addr)
{
struct tipc_node *n_ptr;
n_ptr = tipc_node_find(node_addr);
if (n_ptr) {
tipc_node_lock(n_ptr);
n_ptr->flags &= ~TIPC_NAMES_GONE;
tipc_node_unlock(n_ptr);
}
}
static void node_lost_contact(struct tipc_node *n_ptr) static void node_lost_contact(struct tipc_node *n_ptr)
{ {
char addr_string[16]; char addr_string[16];
...@@ -320,12 +308,10 @@ static void node_lost_contact(struct tipc_node *n_ptr) ...@@ -320,12 +308,10 @@ static void node_lost_contact(struct tipc_node *n_ptr)
tipc_link_reset_fragments(l_ptr); tipc_link_reset_fragments(l_ptr);
} }
/* Notify subscribers */ /* Notify subscribers and prevent re-contact with node until
n_ptr->flags = TIPC_NODE_LOST; * cleanup is done.
*/
/* Prevent re-contact with node until cleanup is done */ n_ptr->flags = TIPC_NODE_DOWN | TIPC_NODE_LOST;
n_ptr->flags |= TIPC_NODE_DOWN | TIPC_NAMES_GONE;
tipc_k_signal((Handler)node_name_purge_complete, n_ptr->addr);
} }
struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space) struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space)
......
...@@ -49,16 +49,14 @@ ...@@ -49,16 +49,14 @@
/* Flags used to block (re)establishment of contact with a neighboring node /* Flags used to block (re)establishment of contact with a neighboring node
* TIPC_NODE_DOWN: indicate node is down * TIPC_NODE_DOWN: indicate node is down
* TIPC_NAMES_GONE: indicate the node's publications are purged
* TIPC_NODE_RESET: indicate node is reset * TIPC_NODE_RESET: indicate node is reset
* TIPC_NODE_LOST: indicate node is lost and it's used to notify subscriptions * TIPC_NODE_LOST: indicate node is lost and it's used to notify subscriptions
* when node lock is released * when node lock is released
*/ */
enum { enum {
TIPC_NODE_DOWN = (1 << 1), TIPC_NODE_DOWN = (1 << 1),
TIPC_NAMES_GONE = (1 << 2), TIPC_NODE_RESET = (1 << 2),
TIPC_NODE_RESET = (1 << 3), TIPC_NODE_LOST = (1 << 3)
TIPC_NODE_LOST = (1 << 4)
}; };
/** /**
...@@ -142,7 +140,7 @@ static inline void tipc_node_lock(struct tipc_node *node) ...@@ -142,7 +140,7 @@ static inline void tipc_node_lock(struct tipc_node *node)
static inline bool tipc_node_blocked(struct tipc_node *node) static inline bool tipc_node_blocked(struct tipc_node *node)
{ {
return (node->flags & (TIPC_NODE_DOWN | TIPC_NAMES_GONE | return (node->flags & (TIPC_NODE_DOWN | TIPC_NODE_LOST |
TIPC_NODE_RESET)); TIPC_NODE_RESET));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment