On 03/13/2018 09:24 PM, Jon Maloy wrote: > 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 -> issuing_sock > ref -> port > > There are no functional changes in this commit. > > Signed-off-by: Jon Maloy <[email protected]>
Acked-by: Ying Xue <[email protected]> > --- > net/tipc/name_distr.c | 12 ++--- > net/tipc/name_distr.h | 2 +- > net/tipc/name_table.c | 143 > ++++++++++++++++++++++++-------------------------- > net/tipc/name_table.h | 38 ++++++++------ > net/tipc/socket.c | 14 ++--- > 5 files changed, 106 insertions(+), 103 deletions(-) > > diff --git a/net/tipc/name_distr.c b/net/tipc/name_distr.c > index c4a7827..88f4fa1 100644 > --- a/net/tipc/name_distr.c > +++ b/net/tipc/name_distr.c > @@ -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->issuing_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->issuing_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->issuing_node, node); > diff --git a/net/tipc/name_distr.h b/net/tipc/name_distr.h > index 1264ba0..4753e62 100644 > --- a/net/tipc/name_distr.h > +++ b/net/tipc/name_distr.h > @@ -63,7 +63,7 @@ struct distr_item { > __be32 type; > __be32 lower; > __be32 upper; > - __be32 ref; > + __be32 port; > __be32 key; > }; > > diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c > index 6d7b4c7..856f7bd 100644 > --- a/net/tipc/name_table.c > +++ b/net/tipc/name_table.c > @@ -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. > * > @@ -51,11 +51,11 @@ > /** > * 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->issuing_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 @@ static struct publication > *tipc_nameseq_remove_publ(struct net *net, > /* 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->issuing_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; > diff --git a/net/tipc/name_table.h b/net/tipc/name_table.h > index c32602d..4774bf1 100644 > --- a/net/tipc/name_table.h > +++ b/net/tipc/name_table.h > @@ -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 > + * @issuing_node: all publications from the same node which issued 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 > + * @issuing_sock: all publications from the socket socket which issued 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 lookup algorithm > + * @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 issuing_node; > - struct list_head pport_list; > - struct list_head node_list; > - struct list_head cluster_list; > + struct list_head issuing_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 { > diff --git a/net/tipc/socket.c b/net/tipc/socket.c > index 910d382..f3c2174 100644 > --- a/net/tipc/socket.c > +++ b/net/tipc/socket.c > @@ -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->issuing_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, issuing_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, issuing_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); > + issuing_sock); > } > > - list_for_each_entry_from(p, &tsk->publications, pport_list) { > + list_for_each_entry_from(p, &tsk->publications, issuing_sock) { > err = __tipc_nl_add_sk_publ(skb, cb, p); > if (err) { > *last_publ = p->key; > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ tipc-discussion mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/tipc-discussion
