tipc: some name changes
authorJon Maloy <jon.maloy@ericsson.com>
Thu, 15 Mar 2018 15:48:55 +0000 (16:48 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 17 Mar 2018 21:11:46 +0000 (17:11 -0400)
We rename some lists and fields in struct publication both to make
the naming more consistent and to better reflect their roles. We
also update the descriptions of those lists.

node_list -> local_publ
cluster_list -> all_publ
pport_list -> binding_sock
ref -> port

There are no functional changes in this commit.

Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/name_distr.c
net/tipc/name_distr.h
net/tipc/name_table.c
net/tipc/name_table.h
net/tipc/socket.c

index 4c54fb37875a89f3e4e05aafd994fff4865ec668..28d095a7d8bb802b42d91d046f5aa13e81befb22 100644 (file)
@@ -56,7 +56,7 @@ static void publ_to_item(struct distr_item *i, struct publication *p)
        i->type = htonl(p->type);
        i->lower = htonl(p->lower);
        i->upper = htonl(p->upper);
-       i->ref = htonl(p->ref);
+       i->port = htonl(p->port);
        i->key = htonl(p->key);
 }
 
@@ -209,15 +209,15 @@ static void tipc_publ_purge(struct net *net, struct publication *publ, u32 addr)
 
        spin_lock_bh(&tn->nametbl_lock);
        p = tipc_nametbl_remove_publ(net, publ->type, publ->lower,
-                                    publ->node, publ->ref, publ->key);
+                                    publ->node, publ->port, publ->key);
        if (p)
                tipc_node_unsubscribe(net, &p->binding_node, addr);
        spin_unlock_bh(&tn->nametbl_lock);
 
        if (p != publ) {
                pr_err("Unable to remove publication from failed node\n"
-                      " (type=%u, lower=%u, node=0x%x, ref=%u, key=%u)\n",
-                      publ->type, publ->lower, publ->node, publ->ref,
+                      " (type=%u, lower=%u, node=0x%x, port=%u, key=%u)\n",
+                      publ->type, publ->lower, publ->node, publ->port,
                       publ->key);
        }
 
@@ -268,7 +268,7 @@ static bool tipc_update_nametbl(struct net *net, struct distr_item *i,
                                                ntohl(i->lower),
                                                ntohl(i->upper),
                                                TIPC_CLUSTER_SCOPE, node,
-                                               ntohl(i->ref), ntohl(i->key));
+                                               ntohl(i->port), ntohl(i->key));
                if (publ) {
                        tipc_node_subscribe(net, &publ->binding_node, node);
                        return true;
@@ -276,7 +276,7 @@ static bool tipc_update_nametbl(struct net *net, struct distr_item *i,
        } else if (dtype == WITHDRAWAL) {
                publ = tipc_nametbl_remove_publ(net, ntohl(i->type),
                                                ntohl(i->lower),
-                                               node, ntohl(i->ref),
+                                               node, ntohl(i->port),
                                                ntohl(i->key));
                if (publ) {
                        tipc_node_unsubscribe(net, &publ->binding_node, node);
index 1264ba0af93758befcccc918b587fa4e9591c2c7..4753e628d7c4a0bbdff917f0c3ec5b07d66b9a48 100644 (file)
@@ -63,7 +63,7 @@ struct distr_item {
        __be32 type;
        __be32 lower;
        __be32 upper;
-       __be32 ref;
+       __be32 port;
        __be32 key;
 };
 
index 6d7b4c7ff4b74e398cf4dfb16bc9e9bfc0e95439..bbbfc0702634da360be3ffe8d28b923598e69e66 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * net/tipc/name_table.c: TIPC name table code
  *
- * Copyright (c) 2000-2006, 2014-2015, Ericsson AB
+ * Copyright (c) 2000-2006, 2014-2018, Ericsson AB
  * Copyright (c) 2004-2008, 2010-2014, Wind River Systems
  * All rights reserved.
  *
 /**
  * struct name_info - name sequence publication info
  * @node_list: list of publications on own node of this <type,lower,upper>
- * @cluster_list: list of all publications of this <type,lower,upper>
+ * @all_publ: list of all publications of this <type,lower,upper>
  */
 struct name_info {
-       struct list_head node_list;
-       struct list_head cluster_list;
+       struct list_head local_publ;
+       struct list_head all_publ;
 };
 
 /**
@@ -102,7 +102,7 @@ static int hash(int x)
  * publ_create - create a publication structure
  */
 static struct publication *publ_create(u32 type, u32 lower, u32 upper,
-                                      u32 scope, u32 node, u32 port_ref,
+                                      u32 scope, u32 node, u32 port,
                                       u32 key)
 {
        struct publication *publ = kzalloc(sizeof(*publ), GFP_ATOMIC);
@@ -116,9 +116,9 @@ static struct publication *publ_create(u32 type, u32 lower, u32 upper,
        publ->upper = upper;
        publ->scope = scope;
        publ->node = node;
-       publ->ref = port_ref;
+       publ->port = port;
        publ->key = key;
-       INIT_LIST_HEAD(&publ->pport_list);
+       INIT_LIST_HEAD(&publ->binding_sock);
        return publ;
 }
 
@@ -237,9 +237,9 @@ static struct publication *tipc_nameseq_insert_publ(struct net *net,
                info = sseq->info;
 
                /* Check if an identical publication already exists */
-               list_for_each_entry(publ, &info->cluster_list, cluster_list) {
-                       if ((publ->ref == port) && (publ->key == key) &&
-                           (!publ->node || (publ->node == node)))
+               list_for_each_entry(publ, &info->all_publ, all_publ) {
+                       if (publ->port == port && publ->key == key &&
+                           (!publ->node || publ->node == node))
                                return NULL;
                }
        } else {
@@ -278,8 +278,8 @@ static struct publication *tipc_nameseq_insert_publ(struct net *net,
                        return NULL;
                }
 
-               INIT_LIST_HEAD(&info->node_list);
-               INIT_LIST_HEAD(&info->cluster_list);
+               INIT_LIST_HEAD(&info->local_publ);
+               INIT_LIST_HEAD(&info->all_publ);
 
                /* Insert new sub-sequence */
                sseq = &nseq->sseqs[inspos];
@@ -298,15 +298,15 @@ static struct publication *tipc_nameseq_insert_publ(struct net *net,
        if (!publ)
                return NULL;
 
-       list_add(&publ->cluster_list, &info->cluster_list);
+       list_add(&publ->all_publ, &info->all_publ);
 
        if (in_own_node(net, node))
-               list_add(&publ->node_list, &info->node_list);
+               list_add(&publ->local_publ, &info->local_publ);
 
        /* Any subscriptions waiting for notification?  */
        list_for_each_entry_safe(s, st, &nseq->subscriptions, nameseq_list) {
                tipc_sub_report_overlap(s, publ->lower, publ->upper,
-                                       TIPC_PUBLISHED, publ->ref,
+                                       TIPC_PUBLISHED, publ->port,
                                        publ->node, publ->scope,
                                        created_subseq);
        }
@@ -327,7 +327,7 @@ static struct publication *tipc_nameseq_insert_publ(struct net *net,
 static struct publication *tipc_nameseq_remove_publ(struct net *net,
                                                    struct name_seq *nseq,
                                                    u32 inst, u32 node,
-                                                   u32 ref, u32 key)
+                                                   u32 port, u32 key)
 {
        struct publication *publ;
        struct sub_seq *sseq = nameseq_find_subseq(nseq, inst);
@@ -342,20 +342,20 @@ static struct publication *tipc_nameseq_remove_publ(struct net *net,
        info = sseq->info;
 
        /* Locate publication, if it exists */
-       list_for_each_entry(publ, &info->cluster_list, cluster_list) {
-               if ((publ->key == key) && (publ->ref == ref) &&
-                   (!publ->node || (publ->node == node)))
+       list_for_each_entry(publ, &info->all_publ, all_publ) {
+               if (publ->key == key && publ->port == port &&
+                   (!publ->node || publ->node == node))
                        goto found;
        }
        return NULL;
 
 found:
-       list_del(&publ->cluster_list);
+       list_del(&publ->all_publ);
        if (in_own_node(net, node))
-               list_del(&publ->node_list);
+               list_del(&publ->local_publ);
 
        /* Contract subseq list if no more publications for that subseq */
-       if (list_empty(&info->cluster_list)) {
+       if (list_empty(&info->all_publ)) {
                kfree(info);
                free = &nseq->sseqs[nseq->first_free--];
                memmove(sseq, sseq + 1, (free - (sseq + 1)) * sizeof(*sseq));
@@ -365,8 +365,9 @@ found:
        /* Notify any waiting subscriptions */
        list_for_each_entry_safe(s, st, &nseq->subscriptions, nameseq_list) {
                tipc_sub_report_overlap(s, publ->lower, publ->upper,
-                                       TIPC_WITHDRAWN, publ->ref, publ->node,
-                                       publ->scope, removed_subseq);
+                                       TIPC_WITHDRAWN, publ->port,
+                                       publ->node, publ->scope,
+                                       removed_subseq);
        }
 
        return publ;
@@ -402,12 +403,12 @@ static void tipc_nameseq_subscribe(struct name_seq *nseq,
                        struct name_info *info = sseq->info;
                        int must_report = 1;
 
-                       list_for_each_entry(crs, &info->cluster_list,
-                                           cluster_list) {
+                       list_for_each_entry(crs, &info->all_publ, all_publ) {
                                tipc_sub_report_overlap(sub, sseq->lower,
                                                        sseq->upper,
                                                        TIPC_PUBLISHED,
-                                                       crs->ref, crs->node,
+                                                       crs->port,
+                                                       crs->node,
                                                        crs->scope,
                                                        must_report);
                                must_report = 0;
@@ -460,7 +461,7 @@ struct publication *tipc_nametbl_insert_publ(struct net *net, u32 type,
 }
 
 struct publication *tipc_nametbl_remove_publ(struct net *net, u32 type,
-                                            u32 lower, u32 node, u32 ref,
+                                            u32 lower, u32 node, u32 port,
                                             u32 key)
 {
        struct publication *publ;
@@ -470,7 +471,7 @@ struct publication *tipc_nametbl_remove_publ(struct net *net, u32 type,
                return NULL;
 
        spin_lock_bh(&seq->lock);
-       publ = tipc_nameseq_remove_publ(net, seq, lower, node, ref, key);
+       publ = tipc_nameseq_remove_publ(net, seq, lower, node, port, key);
        if (!seq->first_free && list_empty(&seq->subscriptions)) {
                hlist_del_init_rcu(&seq->ns_list);
                kfree(seq->sseqs);
@@ -503,7 +504,7 @@ u32 tipc_nametbl_translate(struct net *net, u32 type, u32 instance,
        struct name_info *info;
        struct publication *publ;
        struct name_seq *seq;
-       u32 ref = 0;
+       u32 port = 0;
        u32 node = 0;
 
        if (!tipc_in_scope(*destnode, tn->own_addr))
@@ -521,42 +522,42 @@ u32 tipc_nametbl_translate(struct net *net, u32 type, u32 instance,
 
        /* Closest-First Algorithm */
        if (likely(!*destnode)) {
-               if (!list_empty(&info->node_list)) {
-                       publ = list_first_entry(&info->node_list,
+               if (!list_empty(&info->local_publ)) {
+                       publ = list_first_entry(&info->local_publ,
                                                struct publication,
-                                               node_list);
-                       list_move_tail(&publ->node_list,
-                                      &info->node_list);
+                                               local_publ);
+                       list_move_tail(&publ->local_publ,
+                                      &info->local_publ);
                } else {
-                       publ = list_first_entry(&info->cluster_list,
+                       publ = list_first_entry(&info->all_publ,
                                                struct publication,
-                                               cluster_list);
-                       list_move_tail(&publ->cluster_list,
-                                      &info->cluster_list);
+                                               all_publ);
+                       list_move_tail(&publ->all_publ,
+                                      &info->all_publ);
                }
        }
 
        /* Round-Robin Algorithm */
        else if (*destnode == tn->own_addr) {
-               if (list_empty(&info->node_list))
+               if (list_empty(&info->local_publ))
                        goto no_match;
-               publ = list_first_entry(&info->node_list, struct publication,
-                                       node_list);
-               list_move_tail(&publ->node_list, &info->node_list);
+               publ = list_first_entry(&info->local_publ, struct publication,
+                                       local_publ);
+               list_move_tail(&publ->local_publ, &info->local_publ);
        } else {
-               publ = list_first_entry(&info->cluster_list, struct publication,
-                                       cluster_list);
-               list_move_tail(&publ->cluster_list, &info->cluster_list);
+               publ = list_first_entry(&info->all_publ, struct publication,
+                                       all_publ);
+               list_move_tail(&publ->all_publ, &info->all_publ);
        }
 
-       ref = publ->ref;
+       port = publ->port;
        node = publ->node;
 no_match:
        spin_unlock_bh(&seq->lock);
 not_found:
        rcu_read_unlock();
        *destnode = node;
-       return ref;
+       return port;
 }
 
 bool tipc_nametbl_lookup(struct net *net, u32 type, u32 instance, u32 scope,
@@ -578,17 +579,16 @@ bool tipc_nametbl_lookup(struct net *net, u32 type, u32 instance, u32 scope,
        sseq = nameseq_find_subseq(seq, instance);
        if (likely(sseq)) {
                info = sseq->info;
-               list_for_each_entry(publ, &info->cluster_list, cluster_list) {
+               list_for_each_entry(publ, &info->all_publ, all_publ) {
                        if (publ->scope != scope)
                                continue;
-                       if (publ->ref == exclude && publ->node == self)
+                       if (publ->port == exclude && publ->node == self)
                                continue;
-                       tipc_dest_push(dsts, publ->node, publ->ref);
+                       tipc_dest_push(dsts, publ->node, publ->port);
                        (*dstcnt)++;
                        if (all)
                                continue;
-                       list_move_tail(&publ->cluster_list,
-                                      &info->cluster_list);
+                       list_move_tail(&publ->all_publ, &info->all_publ);
                        break;
                }
        }
@@ -619,9 +619,9 @@ void tipc_nametbl_mc_lookup(struct net *net, u32 type, u32 lower, u32 upper,
                if (sseq->lower > upper)
                        break;
                info = sseq->info;
-               list_for_each_entry(p, &info->node_list, node_list) {
+               list_for_each_entry(p, &info->local_publ, local_publ) {
                        if (p->scope == scope || (!exact && p->scope < scope))
-                               tipc_dest_push(dports, 0, p->ref);
+                               tipc_dest_push(dports, 0, p->port);
                }
        }
        spin_unlock_bh(&seq->lock);
@@ -651,7 +651,7 @@ void tipc_nametbl_lookup_dst_nodes(struct net *net, u32 type, u32 lower,
        stop = seq->sseqs + seq->first_free;
        for (; sseq != stop && sseq->lower <= upper; sseq++) {
                info = sseq->info;
-               list_for_each_entry(publ, &info->cluster_list, cluster_list) {
+               list_for_each_entry(publ, &info->all_publ, all_publ) {
                        tipc_nlist_add(nodes, publ->node);
                }
        }
@@ -680,10 +680,10 @@ void tipc_nametbl_build_group(struct net *net, struct tipc_group *grp,
        stop = seq->sseqs + seq->first_free;
        for (; sseq != stop; sseq++) {
                info = sseq->info;
-               list_for_each_entry(p, &info->cluster_list, cluster_list) {
+               list_for_each_entry(p, &info->all_publ, all_publ) {
                        if (p->scope != scope)
                                continue;
-                       tipc_group_add_member(grp, p->node, p->ref, p->lower);
+                       tipc_group_add_member(grp, p->node, p->port, p->lower);
                }
        }
        spin_unlock_bh(&seq->lock);
@@ -728,7 +728,7 @@ struct publication *tipc_nametbl_publish(struct net *net, u32 type, u32 lower,
 /**
  * tipc_nametbl_withdraw - withdraw name publication from network name tables
  */
-int tipc_nametbl_withdraw(struct net *net, u32 type, u32 lower, u32 ref,
+int tipc_nametbl_withdraw(struct net *net, u32 type, u32 lower, u32 port,
                          u32 key)
 {
        struct publication *publ;
@@ -737,18 +737,18 @@ int tipc_nametbl_withdraw(struct net *net, u32 type, u32 lower, u32 ref,
 
        spin_lock_bh(&tn->nametbl_lock);
        publ = tipc_nametbl_remove_publ(net, type, lower, tn->own_addr,
-                                       ref, key);
+                                       port, key);
        if (likely(publ)) {
                tn->nametbl->local_publ_count--;
                skb = tipc_named_withdraw(net, publ);
                /* Any pending external events? */
                tipc_named_process_backlog(net);
-               list_del_init(&publ->pport_list);
+               list_del_init(&publ->binding_sock);
                kfree_rcu(publ, rcu);
        } else {
                pr_err("Unable to remove local publication\n"
-                      "(type=%u, lower=%u, ref=%u, key=%u)\n",
-                      type, lower, ref, key);
+                      "(type=%u, lower=%u, port=%u, key=%u)\n",
+                      type, lower, port, key);
        }
        spin_unlock_bh(&tn->nametbl_lock);
 
@@ -851,10 +851,9 @@ static void tipc_purge_publications(struct net *net, struct name_seq *seq)
        spin_lock_bh(&seq->lock);
        sseq = seq->sseqs;
        info = sseq->info;
-       list_for_each_entry_safe(publ, safe, &info->cluster_list,
-                                cluster_list) {
+       list_for_each_entry_safe(publ, safe, &info->all_publ, all_publ) {
                tipc_nameseq_remove_publ(net, seq, publ->lower, publ->node,
-                                        publ->ref, publ->key);
+                                        publ->port, publ->key);
                kfree_rcu(publ, rcu);
        }
        hlist_del_init_rcu(&seq->ns_list);
@@ -901,19 +900,17 @@ static int __tipc_nl_add_nametable_publ(struct tipc_nl_msg *msg,
        struct publication *p;
 
        if (*last_publ) {
-               list_for_each_entry(p, &sseq->info->cluster_list,
-                                   cluster_list)
+               list_for_each_entry(p, &sseq->info->all_publ, all_publ)
                        if (p->key == *last_publ)
                                break;
                if (p->key != *last_publ)
                        return -EPIPE;
        } else {
-               p = list_first_entry(&sseq->info->cluster_list,
-                                    struct publication,
-                                    cluster_list);
+               p = list_first_entry(&sseq->info->all_publ, struct publication,
+                                    all_publ);
        }
 
-       list_for_each_entry_from(p, &sseq->info->cluster_list, cluster_list) {
+       list_for_each_entry_from(p, &sseq->info->all_publ, all_publ) {
                *last_publ = p->key;
 
                hdr = genlmsg_put(msg->skb, msg->portid, msg->seq,
@@ -940,7 +937,7 @@ static int __tipc_nl_add_nametable_publ(struct tipc_nl_msg *msg,
                        goto publ_msg_full;
                if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_NODE, p->node))
                        goto publ_msg_full;
-               if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_REF, p->ref))
+               if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_REF, p->port))
                        goto publ_msg_full;
                if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_KEY, p->key))
                        goto publ_msg_full;
index cb16bd883565062eea08da91c6a41cde0ff93185..34a4ccb907aa2c9174bc0ce60ac751d09f38d705 100644 (file)
@@ -54,19 +54,22 @@ struct tipc_group;
  * @type: name sequence type
  * @lower: name sequence lower bound
  * @upper: name sequence upper bound
- * @scope: scope of publication
- * @node: network address of publishing port's node
- * @ref: publishing port
- * @key: publication key
- * @nodesub_list: subscription to "node down" event (off-node publication only)
- * @local_list: adjacent entries in list of publications made by this node
- * @pport_list: adjacent entries in list of publications made by this port
- * @node_list: adjacent matching name seq publications with >= node scope
- * @cluster_list: adjacent matching name seq publications with >= cluster scope
- * @zone_list: adjacent matching name seq publications with >= zone scope
+ * @scope: scope of publication, TIPC_NODE_SCOPE or TIPC_CLUSTER_SCOPE
+ * @node: network address of publishing socket's node
+ * @port: publishing port
+ * @key: publication key, unique across the cluster
+ * @binding_node: all publications from the same node which bound this one
+ * - Remote publications: in node->publ_list
+ *   Used by node/name distr to withdraw publications when node is lost
+ * - Local/node scope publications: in name_table->node_scope list
+ * - Local/cluster scope publications: in name_table->cluster_scope list
+ * @binding_sock: all publications from the same socket which bound this one
+ *   Used by socket to withdraw publications when socket is unbound/released
+ * @local_publ: list of identical publications made from this node
+ *   Used by closest_first and multicast receive lookup algorithms
+ * @all_publ: all publications identical to this one, whatever node and scope
+ *   Used by round-robin lookup algorithm
  * @rcu: RCU callback head used for deferred freeing
- *
- * Note that the node list, cluster list, and zone list are circular lists.
  */
 struct publication {
        u32 type;
@@ -74,12 +77,12 @@ struct publication {
        u32 upper;
        u32 scope;
        u32 node;
-       u32 ref;
+       u32 port;
        u32 key;
        struct list_head binding_node;
-       struct list_head pport_list;
-       struct list_head node_list;
-       struct list_head cluster_list;
+       struct list_head binding_sock;
+       struct list_head local_publ;
+       struct list_head all_publ;
        struct rcu_head rcu;
 };
 
@@ -87,7 +90,10 @@ struct publication {
  * struct name_table - table containing all existing port name publications
  * @seq_hlist: name sequence hash lists
  * @node_scope: all local publications with node scope
+ *               - used by name_distr during re-init of name table
  * @cluster_scope: all local publications with cluster scope
+ *               - used by name_distr to send bulk updates to new nodes
+ *               - used by name_distr during re-init of name table
  * @local_publ_count: number of publications issued by this node
  */
 struct name_table {
index 910d3827f49932a9f83400a91a63cb979b3808c8..a4a9148d462900db9fa38df92f38c9d1e9c4881a 100644 (file)
@@ -2605,7 +2605,7 @@ static int tipc_sk_publish(struct tipc_sock *tsk, uint scope,
        if (unlikely(!publ))
                return -EINVAL;
 
-       list_add(&publ->pport_list, &tsk->publications);
+       list_add(&publ->binding_sock, &tsk->publications);
        tsk->pub_count++;
        tsk->published = 1;
        return 0;
@@ -2622,7 +2622,7 @@ static int tipc_sk_withdraw(struct tipc_sock *tsk, uint scope,
        if (scope != TIPC_NODE_SCOPE)
                scope = TIPC_CLUSTER_SCOPE;
 
-       list_for_each_entry_safe(publ, safe, &tsk->publications, pport_list) {
+       list_for_each_entry_safe(publ, safe, &tsk->publications, binding_sock) {
                if (seq) {
                        if (publ->scope != scope)
                                continue;
@@ -2633,12 +2633,12 @@ static int tipc_sk_withdraw(struct tipc_sock *tsk, uint scope,
                        if (publ->upper != seq->upper)
                                break;
                        tipc_nametbl_withdraw(net, publ->type, publ->lower,
-                                             publ->ref, publ->key);
+                                             publ->port, publ->key);
                        rc = 0;
                        break;
                }
                tipc_nametbl_withdraw(net, publ->type, publ->lower,
-                                     publ->ref, publ->key);
+                                     publ->port, publ->key);
                rc = 0;
        }
        if (list_empty(&tsk->publications))
@@ -3292,7 +3292,7 @@ static int __tipc_nl_list_sk_publ(struct sk_buff *skb,
        struct publication *p;
 
        if (*last_publ) {
-               list_for_each_entry(p, &tsk->publications, pport_list) {
+               list_for_each_entry(p, &tsk->publications, binding_sock) {
                        if (p->key == *last_publ)
                                break;
                }
@@ -3309,10 +3309,10 @@ static int __tipc_nl_list_sk_publ(struct sk_buff *skb,
                }
        } else {
                p = list_first_entry(&tsk->publications, struct publication,
-                                    pport_list);
+                                    binding_sock);
        }
 
-       list_for_each_entry_from(p, &tsk->publications, pport_list) {
+       list_for_each_entry_from(p, &tsk->publications, binding_sock) {
                err = __tipc_nl_add_sk_publ(skb, cb, p);
                if (err) {
                        *last_publ = p->key;