Whamcloud - gitweb
Update copyrights on source files changed since 2010-02-15.
[fs/lustre-release.git] / lnet / lnet / acceptor.c
index c852f16..1a5652c 100644 (file)
@@ -47,9 +47,9 @@ struct {
         int                   pta_shutdown;
         cfs_socket_t         *pta_sock;
 #ifdef __KERNEL__
-        struct semaphore      pta_signal;
+        cfs_completion_t      pta_signal;
 #else
-        struct cfs_completion pta_signal;
+        cfs_mt_completion_t   pta_signal;
 #endif
 } lnet_acceptor_state;
 
@@ -68,11 +68,11 @@ lnet_accept_magic(__u32 magic, __u32 constant)
 
 #ifdef __KERNEL__
 
-#define cfs_init_completion(c)     init_mutex_locked(c)
-#define cfs_wait_for_completion(c) mutex_down(c)
-#define cfs_complete(c)            mutex_up(c)
-#define cfs_fini_completion(c)     do { } while (0)
-#define cfs_create_thread(func, a) cfs_kernel_thread(func, a, 0)
+#define cfs_mt_init_completion(c)     cfs_init_completion(c)
+#define cfs_mt_wait_for_completion(c) cfs_wait_for_completion(c)
+#define cfs_mt_complete(c)            cfs_complete(c)
+#define cfs_mt_fini_completion(c)     cfs_fini_completion(c)
+#define cfs_create_thread(func, a)    cfs_kernel_thread(func, a, 0)
 
 EXPORT_SYMBOL(lnet_acceptor_port);
 
@@ -87,6 +87,18 @@ CFS_MODULE_PARM(accept_backlog, "i", int, 0444,
 CFS_MODULE_PARM(accept_timeout, "i", int, 0644,
                 "Acceptor's timeout (seconds)");
 
+static char *accept_type = NULL;
+
+int
+lnet_acceptor_get_tunables(void)
+{
+        /* Userland acceptor uses 'accept_type' instead of 'accept', due to
+         * conflict with 'accept(2)', but kernel acceptor still uses 'accept'
+         * for compatibility. Hence the trick. */
+        accept_type = accept;
+        return 0;
+}
+
 int
 lnet_acceptor_timeout(void)
 {
@@ -221,7 +233,7 @@ EXPORT_SYMBOL(lnet_connect);
 
 #else /* below is multi-threaded user-space code */
 
-static char *accept_type    = "secure";
+static char *accept_type = "secure";
 
 int
 lnet_acceptor_get_tunables()
@@ -418,16 +430,12 @@ lnet_acceptor(void *arg)
 
                 lnet_acceptor_state.pta_sock = NULL;
         } else {
-#ifdef __KERNEL__
-                LCONSOLE(0, "Accept %s, port %d\n", accept, accept_port);
-#else
                 LCONSOLE(0, "Accept %s, port %d\n", accept_type, accept_port);
-#endif
         }
 
         /* set init status and unblock parent */
         lnet_acceptor_state.pta_shutdown = rc;
-        cfs_complete(&lnet_acceptor_state.pta_signal);
+        cfs_mt_complete(&lnet_acceptor_state.pta_signal);
 
         if (rc != 0)
                 return rc;
@@ -486,7 +494,7 @@ lnet_acceptor(void *arg)
         LCONSOLE(0, "Acceptor stopping\n");
 
         /* unblock lnet_acceptor_stop() */
-        cfs_complete(&lnet_acceptor_state.pta_signal);
+        cfs_mt_complete(&lnet_acceptor_state.pta_signal);
         return 0;
 }
 
@@ -517,25 +525,20 @@ lnet_acceptor_start(void)
 
         LASSERT (lnet_acceptor_state.pta_sock == NULL);
 
-#ifndef __KERNEL__
-        /* kernel version uses CFS_MODULE_PARM */
         rc = lnet_acceptor_get_tunables();
         if (rc != 0)
                 return rc;
 
+#ifndef __KERNEL__
         /* Do nothing if we're liblustre clients */
         if ((the_lnet.ln_pid & LNET_PID_USERFLAG) != 0)
                 return 0;
 #endif
-        cfs_init_completion(&lnet_acceptor_state.pta_signal);
 
-#ifdef __KERNEL__
-        rc = accept2secure(accept, &secure);
-#else
+        cfs_mt_init_completion(&lnet_acceptor_state.pta_signal);
         rc = accept2secure(accept_type, &secure);
-#endif
         if (rc <= 0) {
-                cfs_fini_completion(&lnet_acceptor_state.pta_signal);
+                cfs_mt_fini_completion(&lnet_acceptor_state.pta_signal);
                 return rc;
         }
 
@@ -545,12 +548,13 @@ lnet_acceptor_start(void)
         rc2 = cfs_create_thread(lnet_acceptor, (void *)(ulong_ptr_t)secure);
         if (rc2 < 0) {
                 CERROR("Can't start acceptor thread: %d\n", rc);
-                cfs_fini_completion(&lnet_acceptor_state.pta_signal);
+                cfs_mt_fini_completion(&lnet_acceptor_state.pta_signal);
+
                 return -ESRCH;
         }
 
         /* wait for acceptor to startup */
-        cfs_wait_for_completion(&lnet_acceptor_state.pta_signal);
+        cfs_mt_wait_for_completion(&lnet_acceptor_state.pta_signal);
 
         if (!lnet_acceptor_state.pta_shutdown) {
                 /* started OK */
@@ -559,7 +563,8 @@ lnet_acceptor_start(void)
         }
 
         LASSERT (lnet_acceptor_state.pta_sock == NULL);
-        cfs_fini_completion(&lnet_acceptor_state.pta_signal);
+        cfs_mt_fini_completion(&lnet_acceptor_state.pta_signal);
+
         return -ENETDOWN;
 }
 
@@ -573,9 +578,9 @@ lnet_acceptor_stop(void)
         libcfs_sock_abort_accept(lnet_acceptor_state.pta_sock);
 
         /* block until acceptor signals exit */
-        cfs_wait_for_completion(&lnet_acceptor_state.pta_signal);
+        cfs_mt_wait_for_completion(&lnet_acceptor_state.pta_signal);
 
-        cfs_fini_completion(&lnet_acceptor_state.pta_signal);
+        cfs_mt_fini_completion(&lnet_acceptor_state.pta_signal);
 }
 
 #else /* single-threaded user-space */