tipc: Eliminate use of user registry by topology service
Allan Stephens [Fri, 31 Dec 2010 18:59:21 +0000 (18:59 +0000)]
Simplifies TIPC's network topology service so that it no longer registers
its ports with the user registry, since the service doesn't take advantage
of any of the registry's capabilities.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

net/tipc/subscr.c

index 23f43d0..21abf17 100644 (file)
@@ -36,7 +36,7 @@
 
 #include "core.h"
 #include "name_table.h"
-#include "user_reg.h"
+#include "port.h"
 #include "subscr.h"
 
 /**
@@ -64,7 +64,6 @@ struct subscriber {
  */
 
 struct top_srv {
-       u32 user_ref;
        u32 setup_port;
        atomic_t subscription_count;
        struct list_head subscriber_list;
@@ -494,7 +493,7 @@ static void subscr_named_msg_event(void *usr_handle,
 
        /* Create server port & establish connection to subscriber */
 
-       tipc_createport(topsrv.user_ref,
+       tipc_createport(0,
                        subscriber,
                        importance,
                        NULL,
@@ -549,13 +548,7 @@ int tipc_subscr_start(void)
        INIT_LIST_HEAD(&topsrv.subscriber_list);
 
        spin_lock_bh(&topsrv.lock);
-       res = tipc_attach(&topsrv.user_ref);
-       if (res) {
-               spin_unlock_bh(&topsrv.lock);
-               return res;
-       }
-
-       res = tipc_createport(topsrv.user_ref,
+       res = tipc_createport(0,
                              NULL,
                              TIPC_CRITICAL_IMPORTANCE,
                              NULL,
@@ -570,16 +563,17 @@ int tipc_subscr_start(void)
                goto failed;
 
        res = tipc_nametbl_publish_rsv(topsrv.setup_port, TIPC_NODE_SCOPE, &seq);
-       if (res)
+       if (res) {
+               tipc_deleteport(topsrv.setup_port);
+               topsrv.setup_port = 0;
                goto failed;
+       }
 
        spin_unlock_bh(&topsrv.lock);
        return 0;
 
 failed:
        err("Failed to create subscription service\n");
-       tipc_detach(topsrv.user_ref);
-       topsrv.user_ref = 0;
        spin_unlock_bh(&topsrv.lock);
        return res;
 }
@@ -590,8 +584,10 @@ void tipc_subscr_stop(void)
        struct subscriber *subscriber_temp;
        spinlock_t *subscriber_lock;
 
-       if (topsrv.user_ref) {
+       if (topsrv.setup_port) {
                tipc_deleteport(topsrv.setup_port);
+               topsrv.setup_port = 0;
+
                list_for_each_entry_safe(subscriber, subscriber_temp,
                                         &topsrv.subscriber_list,
                                         subscriber_list) {
@@ -600,7 +596,5 @@ void tipc_subscr_stop(void)
                        subscr_terminate(subscriber);
                        spin_unlock_bh(subscriber_lock);
                }
-               tipc_detach(topsrv.user_ref);
-               topsrv.user_ref = 0;
        }
 }