Whamcloud - gitweb
LU-9859 libcfs: rename cfs_cpt_table to cfs_cpt_tab
[fs/lustre-release.git] / lnet / lnet / api-ni.c
index b644b05..f580a89 100644 (file)
@@ -37,6 +37,9 @@
 #include <linux/ktime.h>
 #include <linux/moduleparam.h>
 #include <linux/uaccess.h>
+#ifdef HAVE_SCHED_HEADERS
+#include <linux/sched/signal.h>
+#endif
 
 #include <lnet/lib-lnet.h>
 
@@ -1513,7 +1516,7 @@ lnet_ping_buffer_alloc(int nnis, gfp_t gfp)
 void
 lnet_ping_buffer_free(struct lnet_ping_buffer *pbuf)
 {
-       LASSERT(lnet_ping_buffer_numref(pbuf) == 0);
+       LASSERT(atomic_read(&pbuf->pb_refcnt) == 0);
        LIBCFS_FREE(pbuf, LNET_PING_BUFFER_SIZE(pbuf->pb_nnis));
 }
 
@@ -1726,7 +1729,7 @@ lnet_ping_target_setup(struct lnet_ping_buffer **ppbuf,
 fail_unlink_ping_me:
        LNetMEUnlink(me);
 fail_decref_ping_buffer:
-       LASSERT(lnet_ping_buffer_numref(*ppbuf) == 1);
+       LASSERT(atomic_read(&(*ppbuf)->pb_refcnt) == 1);
        lnet_ping_buffer_decref(*ppbuf);
        *ppbuf = NULL;
 fail_free_eq:
@@ -1741,19 +1744,14 @@ static void
 lnet_ping_md_unlink(struct lnet_ping_buffer *pbuf,
                    struct lnet_handle_md *ping_mdh)
 {
-       sigset_t        blocked = cfs_block_allsigs();
-
        LNetMDUnlink(*ping_mdh);
        LNetInvalidateMDHandle(ping_mdh);
 
        /* NB the MD could be busy; this just starts the unlink */
-       while (lnet_ping_buffer_numref(pbuf) > 1) {
+       while (atomic_read(&pbuf->pb_refcnt) > 1) {
                CDEBUG(D_NET, "Still waiting for ping data MD to unlink\n");
-               set_current_state(TASK_UNINTERRUPTIBLE);
-               schedule_timeout(cfs_time_seconds(1));
+               schedule_timeout_uninterruptible(cfs_time_seconds(1));
        }
-
-       cfs_restore_sigs(blocked);
 }
 
 static void
@@ -1981,10 +1979,9 @@ static void lnet_push_target_fini(void)
        LNetInvalidateMDHandle(&the_lnet.ln_push_target_md);
 
        /* Wait for the unlink to complete. */
-       while (lnet_ping_buffer_numref(the_lnet.ln_push_target) > 1) {
+       while (atomic_read(&the_lnet.ln_push_target->pb_refcnt) > 1) {
                CDEBUG(D_NET, "Still waiting for ping data MD to unlink\n");
-               set_current_state(TASK_UNINTERRUPTIBLE);
-               schedule_timeout(cfs_time_seconds(1));
+               schedule_timeout_uninterruptible(cfs_time_seconds(1));
        }
 
        lnet_ping_buffer_decref(the_lnet.ln_push_target);
@@ -2060,8 +2057,7 @@ lnet_clear_zombies_nis_locked(struct lnet_net *net)
                                       "Waiting for zombie LNI %s\n",
                                       libcfs_nid2str(ni->ni_nid));
                        }
-                       set_current_state(TASK_UNINTERRUPTIBLE);
-                       schedule_timeout(cfs_time_seconds(1));
+                       schedule_timeout_uninterruptible(cfs_time_seconds(1));
                        lnet_net_lock(LNET_LOCK_EX);
                        continue;
                }
@@ -2155,16 +2151,12 @@ lnet_shutdown_lndnets(void)
        lnet_net_lock(LNET_LOCK_EX);
        the_lnet.ln_state = LNET_STATE_STOPPING;
 
-       while (!list_empty(&the_lnet.ln_nets)) {
-               /*
-                * move the nets to the zombie list to avoid them being
-                * picked up for new work. LONET is also included in the
-                * Nets that will be moved to the zombie list
-                */
-               net = list_entry(the_lnet.ln_nets.next,
-                                struct lnet_net, net_list);
-               list_move(&net->net_list, &the_lnet.ln_net_zombie);
-       }
+       /*
+        * move the nets to the zombie list to avoid them being
+        * picked up for new work. LONET is also included in the
+        * Nets that will be moved to the zombie list
+        */
+       list_splice_init(&the_lnet.ln_nets, &the_lnet.ln_net_zombie);
 
        /* Drop the cached loopback Net. */
        if (the_lnet.ln_loni != NULL) {
@@ -2498,8 +2490,8 @@ int lnet_lib_init(void)
        lnet_assert_wire_constants();
 
        /* refer to global cfs_cpt_table for now */
-       the_lnet.ln_cpt_table   = cfs_cpt_table;
-       the_lnet.ln_cpt_number  = cfs_cpt_number(cfs_cpt_table);
+       the_lnet.ln_cpt_table = cfs_cpt_tab;
+       the_lnet.ln_cpt_number = cfs_cpt_number(cfs_cpt_tab);
 
        LASSERT(the_lnet.ln_cpt_number > 0);
        if (the_lnet.ln_cpt_number > LNET_CPT_MAX) {
@@ -4162,8 +4154,12 @@ static int lnet_ping(struct lnet_process_id id, signed long timeout,
 
        do {
                /* MUST block for unlink to complete */
-               if (unlinked)
-                       blocked = cfs_block_allsigs();
+               if (unlinked) {
+                       sigset_t set;
+
+                       sigfillset(&set);
+                       sigprocmask(SIG_SETMASK, &set, &blocked);
+               }
 
                rc2 = LNetEQPoll(&eqh, 1, timeout, &event, &which);