From: Jon Maloy <jma...@redhat.com>

We move some warning printouts to more strategic locations to avoid
duplicates and yield more detailed information about the reported
problem.

Signed-off-by: Jon Maloy <jma...@redhat.com>
---
 net/tipc/name_distr.c |  7 -------
 net/tipc/name_table.c | 36 +++++++++++++++++-------------------
 2 files changed, 17 insertions(+), 26 deletions(-)

diff --git a/net/tipc/name_distr.c b/net/tipc/name_distr.c
index fe5f39792323..47f00e420377 100644
--- a/net/tipc/name_distr.c
+++ b/net/tipc/name_distr.c
@@ -253,13 +253,6 @@ static void tipc_publ_purge(struct net *net, struct 
publication *p, u32 addr)
        if (_p)
                tipc_node_unsubscribe(net, &_p->binding_node, addr);
        spin_unlock_bh(&tn->nametbl_lock);
-
-       if (_p != p) {
-               pr_err("Unable to remove publication from failed node\n"
-                      " (type=%u, lower=%u, node=%u, port=%u, key=%u)\n",
-                      p->sr.type, p->sr.lower, p->sk.node, p->sk.ref, p->key);
-       }
-
        if (_p)
                kfree_rcu(_p, rcu);
 }
diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c
index 9085c41a1709..946d3ed5de5a 100644
--- a/net/tipc/name_table.c
+++ b/net/tipc/name_table.c
@@ -337,17 +337,22 @@ static bool tipc_service_insert_publ(struct net *net,
        struct publication *_p;
        u32 node = p->sk.node;
        bool first = false;
+       u32 key = p->key;
 
        sr = tipc_service_create_range(sc, p);
        if (!sr)
-               goto  err;
+               return false;
 
        first = list_empty(&sr->all_publ);
 
        /* Return if the publication already exists */
        list_for_each_entry(_p, &sr->all_publ, all_publ) {
-               if (_p->key == p->key && (!_p->sk.node || _p->sk.node == node))
+               if (_p->key == key && (!_p->sk.node || _p->sk.node == node)) {
+                       pr_debug("Failed to bind duplicate %u,%u,%u/%u:%u/%u\n",
+                                p->sr.type, p->sr.lower, p->sr.upper,
+                                node, p->sk.ref, key);
                        return false;
+               }
        }
 
        if (in_own_node(net, p->sk.node))
@@ -360,10 +365,6 @@ static bool tipc_service_insert_publ(struct net *net,
                tipc_sub_report_overlap(sub, p, TIPC_PUBLISHED, first);
        }
        return true;
-err:
-       pr_warn("Failed to bind to %u,%u,%u, no memory\n",
-               p->sr.type, p->sr.lower, p->sr.upper);
-       return false;
 }
 
 /**
@@ -473,18 +474,12 @@ struct publication *tipc_nametbl_insert_publ(struct net 
*net,
 {
        struct tipc_service *sc;
        struct publication *p;
-       u32 type = ua->sr.type;
        bool res = false;
 
        p = tipc_publ_create(ua, sk, key);
        if (!p)
                return NULL;
 
-       if (ua->sr.lower > ua->sr.upper) {
-               pr_debug("Failed to bind illegal {%u,%u,%u} from node %u\n",
-                        type, ua->sr.lower, ua->sr.upper, sk->node);
-               return NULL;
-       }
        sc = tipc_service_find(net, ua);
        if (!sc)
                sc = tipc_service_create(net, ua);
@@ -512,15 +507,15 @@ struct publication *tipc_nametbl_remove_publ(struct net 
*net,
 
        sc = tipc_service_find(net, ua);
        if (!sc)
-               return NULL;
+               goto exit;
 
        spin_lock_bh(&sc->lock);
        sr = tipc_service_find_range(sc, ua);
        if (!sr)
-               goto exit;
+               goto unlock;
        p = tipc_service_remove_publ(sr, ua, sk, key);
        if (!p)
-               goto exit;
+               goto unlock;
 
        /* Notify any waiting subscriptions */
        last = list_empty(&sr->all_publ);
@@ -539,8 +534,14 @@ struct publication *tipc_nametbl_remove_publ(struct net 
*net,
                hlist_del_init_rcu(&sc->service_list);
                kfree_rcu(sc, rcu);
        }
-exit:
+unlock:
        spin_unlock_bh(&sc->lock);
+exit:
+       if (!p) {
+               pr_err("Failed to remove unknown binding: %u,%u,%u/%u:%u/%u\n",
+                      ua->sr.type, ua->sr.lower, ua->sr.upper,
+                      sk->node, sk->ref, key);
+       }
        return p;
 }
 
@@ -809,9 +810,6 @@ void tipc_nametbl_withdraw(struct net *net, struct 
tipc_uaddr *ua,
                skb = tipc_named_withdraw(net, p);
                list_del_init(&p->binding_sock);
                kfree_rcu(p, rcu);
-       } else {
-               pr_err("Failed to remove local publication {%u,%u,%u}/%u\n",
-                      ua->sr.type, ua->sr.lower, ua->sr.upper, key);
        }
        rc_dests = nt->rc_dests;
        spin_unlock_bh(&tn->nametbl_lock);
-- 
2.28.0



_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to