Whamcloud - gitweb
LU-1346 gnilnd: remove libcfs abstractions
[fs/lustre-release.git] / lnet / klnds / mxlnd / mxlnd.c
index 558bfaf..13b5f02 100644 (file)
@@ -342,15 +342,15 @@ mxlnd_init_mx(lnet_ni_t *ni)
                 goto failed_with_init;
         }
 
-        mx_get_endpoint_addr(kmxlnd_data.kmx_endpt, &kmxlnd_data.kmx_epa);
-        mx_decompose_endpoint_addr(kmxlnd_data.kmx_epa, &nic_id, &ep_id);
-        mxret = mx_connect(kmxlnd_data.kmx_endpt, nic_id, ep_id,
-                           MXLND_MSG_MAGIC, MXLND_CONNECT_TIMEOUT/CFS_HZ*1000,
-                           &kmxlnd_data.kmx_epa);
-        if (mxret != MX_SUCCESS) {
-                CNETERR("unable to connect to myself (%s)\n", mx_strerror(mxret));
-                goto failed_with_endpoint;
-        }
+       mx_get_endpoint_addr(kmxlnd_data.kmx_endpt, &kmxlnd_data.kmx_epa);
+       mx_decompose_endpoint_addr(kmxlnd_data.kmx_epa, &nic_id, &ep_id);
+       mxret = mx_connect(kmxlnd_data.kmx_endpt, nic_id, ep_id,
+                          MXLND_MSG_MAGIC, MXLND_CONNECT_TIMEOUT/HZ*1000,
+                          &kmxlnd_data.kmx_epa);
+       if (mxret != MX_SUCCESS) {
+               CNETERR("unable to connect to myself (%s)\n", mx_strerror(mxret));
+               goto failed_with_endpoint;
+       }
 
         ni->ni_nid = LNET_MKNID(LNET_NIDNET(ni->ni_nid), ip);
         CDEBUG(D_NET, "My NID is 0x%llx\n", ni->ni_nid);
@@ -364,13 +364,13 @@ mxlnd_init_mx(lnet_ni_t *ni)
                          mx_strerror(mxret));
                 goto failed_with_endpoint;
         }
-        mxret = mx_set_request_timeout(kmxlnd_data.kmx_endpt, NULL,
-                                       MXLND_COMM_TIMEOUT/CFS_HZ*1000);
-        if (mxret != MX_SUCCESS) {
-                CERROR("mx_set_request_timeout() failed with %s\n",
-                        mx_strerror(mxret));
-                goto failed_with_endpoint;
-        }
+       mxret = mx_set_request_timeout(kmxlnd_data.kmx_endpt, NULL,
+                                      MXLND_COMM_TIMEOUT/HZ*1000);
+       if (mxret != MX_SUCCESS) {
+               CERROR("mx_set_request_timeout() failed with %s\n",
+                       mx_strerror(mxret));
+               goto failed_with_endpoint;
+       }
         return 0;
 
 failed_with_endpoint:
@@ -385,24 +385,25 @@ failed_with_init:
  * mxlnd_thread_start - spawn a kernel thread with this function
  * @fn - function pointer
  * @arg - pointer to the parameter data
+ * @name - name of new thread
  *
  * Returns 0 on success and a negative value on failure
  */
 int
-mxlnd_thread_start(int (*fn)(void *arg), void *arg)
+mxlnd_thread_start(int (*fn)(void *arg), void *arg, char *name)
 {
-        int     pid = 0;
+       cfs_task *task;
         int     i   = (int) ((long) arg);
 
         cfs_atomic_inc(&kmxlnd_data.kmx_nthreads);
        init_completion(&kmxlnd_data.kmx_completions[i]);
 
-        pid = cfs_create_thread(fn, arg, 0);
-        if (pid < 0) {
-                CERROR("cfs_create_thread() failed with %d\n", pid);
-                cfs_atomic_dec(&kmxlnd_data.kmx_nthreads);
-        }
-        return pid;
+       task = kthread_run(fn, arg, name);
+       if (IS_ERR(task)) {
+               CERROR("cfs_create_thread() failed with %d\n", PTR_ERR(task));
+               cfs_atomic_dec(&kmxlnd_data.kmx_nthreads);
+       }
+       return PTR_ERR(task);
 }
 
 /**
@@ -451,11 +452,11 @@ mxlnd_shutdown (lnet_ni_t *ni)
                 /* calls write_[un]lock(kmx_global_lock) */
                 mxlnd_del_peer(LNET_NID_ANY);
 
-                /* wakeup request_waitds */
-                mx_wakeup(kmxlnd_data.kmx_endpt);
+               /* wakeup request_waitds */
+               mx_wakeup(kmxlnd_data.kmx_endpt);
                up(&kmxlnd_data.kmx_tx_queue_sem);
                up(&kmxlnd_data.kmx_conn_sem);
-                mxlnd_sleep(2 * CFS_HZ);
+               mxlnd_sleep(2 * HZ);
 
                 /* fall through */
 
@@ -514,9 +515,9 @@ mxlnd_shutdown (lnet_ni_t *ni)
                          "kmx_mem_used %ld\n", cfs_atomic_read(&libcfs_kmemory),
                          kmxlnd_data.kmx_mem_used);
 
-        kmxlnd_data.kmx_init = MXLND_INIT_NOTHING;
-        PORTAL_MODULE_UNUSE;
-        return;
+       kmxlnd_data.kmx_init = MXLND_INIT_NOTHING;
+       module_put(THIS_MODULE);
+       return;
 }
 
 /**
@@ -550,15 +551,15 @@ mxlnd_startup (lnet_ni_t *ni)
         if (ni->ni_maxtxcredits < ni->ni_peertxcredits)
                 ni->ni_maxtxcredits = ni->ni_peertxcredits;
 
-        PORTAL_MODULE_USE;
-        memset (&kmxlnd_data, 0, sizeof (kmxlnd_data));
+       try_module_get(THIS_MODULE);
+       memset (&kmxlnd_data, 0, sizeof (kmxlnd_data));
 
         kmxlnd_data.kmx_ni = ni;
         ni->ni_data = &kmxlnd_data;
 
-        cfs_gettimeofday(&tv);
-        kmxlnd_data.kmx_incarnation = (((__u64)tv.tv_sec) * 1000000) + tv.tv_usec;
-        CDEBUG(D_NET, "my incarnation is %llu\n", kmxlnd_data.kmx_incarnation);
+       do_gettimeofday(&tv);
+       kmxlnd_data.kmx_incarnation = (((__u64)tv.tv_sec) * 1000000) + tv.tv_usec;
+       CDEBUG(D_NET, "my incarnation is %llu\n", kmxlnd_data.kmx_incarnation);
 
        rwlock_init (&kmxlnd_data.kmx_global_lock);
        spin_lock_init (&kmxlnd_data.kmx_mem_lock);
@@ -616,9 +617,13 @@ mxlnd_startup (lnet_ni_t *ni)
                 *kmxlnd_tunables.kmx_n_waitd == 1 ? "thread" : "threads");
 
         for (i = 0; i < *kmxlnd_tunables.kmx_n_waitd; i++) {
+               char                    name[24];
+               memset(name, 0, sizeof(name));
+               snprintf(name, sizeof(name), "mxlnd_request_waitd_%02ld", i);
                 ret = mxlnd_thread_start(mxlnd_request_waitd, (void*)((long)i));
-                if (ret < 0) {
-                        CERROR("Starting mxlnd_request_waitd[%d] failed with %d\n", i, ret);
+               if (ret < 0) {
+                       CERROR("Starting mxlnd_request_waitd[%d] "
+                               "failed with %d\n", i, ret);
                         cfs_atomic_set(&kmxlnd_data.kmx_shutdown, 1);
                         mx_wakeup(kmxlnd_data.kmx_endpt);
                         for (--i; i >= 0; i--) {
@@ -631,7 +636,8 @@ mxlnd_startup (lnet_ni_t *ni)
                         goto failed;
                 }
         }
-        ret = mxlnd_thread_start(mxlnd_tx_queued, (void*)((long)i++));
+       ret = mxlnd_thread_start(mxlnd_tx_queued, (void *)((long)i++),
+                                "mxlnd_tx_queued");
         if (ret < 0) {
                 CERROR("Starting mxlnd_tx_queued failed with %d\n", ret);
                 cfs_atomic_set(&kmxlnd_data.kmx_shutdown, 1);
@@ -644,7 +650,8 @@ mxlnd_startup (lnet_ni_t *ni)
                        nthreads * sizeof(struct completion));
                 goto failed;
         }
-        ret = mxlnd_thread_start(mxlnd_timeoutd, (void*)((long)i++));
+       ret = mxlnd_thread_start(mxlnd_timeoutd, (void *)((long)i++),
+                                "mxlnd_timeoutd");
         if (ret < 0) {
                 CERROR("Starting mxlnd_timeoutd failed with %d\n", ret);
                 cfs_atomic_set(&kmxlnd_data.kmx_shutdown, 1);
@@ -658,7 +665,8 @@ mxlnd_startup (lnet_ni_t *ni)
                        nthreads * sizeof(struct completion));
                 goto failed;
         }
-        ret = mxlnd_thread_start(mxlnd_connd, (void*)((long)i++));
+       ret = mxlnd_thread_start(mxlnd_connd, (void *)((long)i++),
+                                "mxlnd_connd");
         if (ret < 0) {
                 CERROR("Starting mxlnd_connd failed with %d\n", ret);
                 cfs_atomic_set(&kmxlnd_data.kmx_shutdown, 1);