Whamcloud - gitweb
LU-4423 lnet: don't use iovec instead of kvec
[fs/lustre-release.git] / lnet / klnds / socklnd / socklnd_cb.c
index d1538fc..e89ccb9 100644 (file)
@@ -8,7 +8,7 @@
  *   Author: Phil Schwan <phil@clusterfs.com>
  *   Author: Eric Barton <eric@bartonsoftware.com>
  *
- *   This file is part of Portals, http://www.sf.net/projects/sandiaportals/
+ *   This file is part of Lustre, https://wiki.hpdd.intel.com/
  *
  *   Portals is free software; you can redistribute it and/or
  *   modify it under the terms of version 2 of the GNU General Public
@@ -110,7 +110,7 @@ ksocknal_free_tx (ksock_tx_t *tx)
 static int
 ksocknal_send_iov (ksock_conn_t *conn, ksock_tx_t *tx)
 {
-        struct iovec  *iov = tx->tx_iov;
+       struct kvec *iov = tx->tx_iov;
         int    nob;
         int    rc;
 
@@ -183,16 +183,17 @@ ksocknal_send_kiov (ksock_conn_t *conn, ksock_tx_t *tx)
 }
 
 static int
-ksocknal_transmit (ksock_conn_t *conn, ksock_tx_t *tx)
+ksocknal_transmit(ksock_conn_t *conn, ksock_tx_t *tx)
 {
-        int      rc;
-        int      bufnob;
+       int     rc;
+       int     bufnob;
 
-        if (ksocknal_data.ksnd_stall_tx != 0) {
-                cfs_pause(cfs_time_seconds(ksocknal_data.ksnd_stall_tx));
-        }
+       if (ksocknal_data.ksnd_stall_tx != 0) {
+               set_current_state(TASK_UNINTERRUPTIBLE);
+               schedule_timeout(cfs_time_seconds(ksocknal_data.ksnd_stall_tx));
+       }
 
-        LASSERT (tx->tx_resid != 0);
+       LASSERT(tx->tx_resid != 0);
 
         rc = ksocknal_connsock_addref(conn);
         if (rc != 0) {
@@ -250,7 +251,7 @@ ksocknal_transmit (ksock_conn_t *conn, ksock_tx_t *tx)
 static int
 ksocknal_recv_iov (ksock_conn_t *conn)
 {
-        struct iovec *iov = conn->ksnc_rx_iov;
+       struct kvec *iov = conn->ksnc_rx_iov;
         int     nob;
         int     rc;
 
@@ -345,9 +346,10 @@ ksocknal_receive (ksock_conn_t *conn)
         int     rc;
         ENTRY;
 
-        if (ksocknal_data.ksnd_stall_rx != 0) {
-                cfs_pause(cfs_time_seconds (ksocknal_data.ksnd_stall_rx));
-        }
+       if (ksocknal_data.ksnd_stall_rx != 0) {
+               set_current_state(TASK_UNINTERRUPTIBLE);
+               schedule_timeout(cfs_time_seconds(ksocknal_data.ksnd_stall_rx));
+       }
 
         rc = ksocknal_connsock_addref(conn);
         if (rc != 0) {
@@ -925,7 +927,7 @@ ksocknal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
         int               type = lntmsg->msg_type;
         lnet_process_id_t target = lntmsg->msg_target;
         unsigned int      payload_niov = lntmsg->msg_niov;
-        struct iovec     *payload_iov = lntmsg->msg_iov;
+       struct kvec *payload_iov = lntmsg->msg_iov;
         lnet_kiov_t      *payload_kiov = lntmsg->msg_kiov;
         unsigned int      payload_offset = lntmsg->msg_offset;
         unsigned int      payload_nob = lntmsg->msg_len;
@@ -1046,7 +1048,7 @@ ksocknal_new_packet (ksock_conn_t *conn, int nob_to_skip)
                case  KSOCK_PROTO_V2:
                case  KSOCK_PROTO_V3:
                         conn->ksnc_rx_state = SOCKNAL_RX_KSM_HEADER;
-                        conn->ksnc_rx_iov = (struct iovec *)&conn->ksnc_rx_iov_space;
+                       conn->ksnc_rx_iov = (struct kvec *)&conn->ksnc_rx_iov_space;
                         conn->ksnc_rx_iov[0].iov_base = (char *)&conn->ksnc_msg;
 
                         conn->ksnc_rx_nob_wanted = offsetof(ksock_msg_t, ksm_u);
@@ -1060,7 +1062,7 @@ ksocknal_new_packet (ksock_conn_t *conn, int nob_to_skip)
                         conn->ksnc_rx_nob_wanted = sizeof(lnet_hdr_t);
                         conn->ksnc_rx_nob_left = sizeof(lnet_hdr_t);
 
-                        conn->ksnc_rx_iov = (struct iovec *)&conn->ksnc_rx_iov_space;
+                       conn->ksnc_rx_iov = (struct kvec *)&conn->ksnc_rx_iov_space;
                         conn->ksnc_rx_iov[0].iov_base = (char *)&conn->ksnc_msg.ksm_u.lnetmsg;
                         conn->ksnc_rx_iov[0].iov_len  = sizeof (lnet_hdr_t);
                         break;
@@ -1081,7 +1083,7 @@ ksocknal_new_packet (ksock_conn_t *conn, int nob_to_skip)
 
         conn->ksnc_rx_state = SOCKNAL_RX_SLOP;
         conn->ksnc_rx_nob_left = nob_to_skip;
-        conn->ksnc_rx_iov = (struct iovec *)&conn->ksnc_rx_iov_space;
+       conn->ksnc_rx_iov = (struct kvec *)&conn->ksnc_rx_iov_space;
         skipped = 0;
         niov = 0;
 
@@ -1095,7 +1097,7 @@ ksocknal_new_packet (ksock_conn_t *conn, int nob_to_skip)
                 nob_to_skip -=nob;
 
         } while (nob_to_skip != 0 &&    /* mustn't overflow conn's rx iov */
-                 niov < sizeof(conn->ksnc_rx_iov_space) / sizeof (struct iovec));
+                niov < sizeof(conn->ksnc_rx_iov_space) / sizeof(struct kvec));
 
         conn->ksnc_rx_niov = niov;
         conn->ksnc_rx_kiov = NULL;
@@ -1113,8 +1115,8 @@ ksocknal_process_receive (ksock_conn_t *conn)
 
        LASSERT (atomic_read(&conn->ksnc_conn_refcount) > 0);
 
-        /* NB: sched lock NOT held */
-        /* SOCKNAL_RX_LNET_HEADER is here for backward compatability */
+       /* NB: sched lock NOT held */
+       /* SOCKNAL_RX_LNET_HEADER is here for backward compatibility */
         LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_KSM_HEADER ||
                  conn->ksnc_rx_state == SOCKNAL_RX_LNET_PAYLOAD ||
                  conn->ksnc_rx_state == SOCKNAL_RX_LNET_HEADER ||
@@ -1213,7 +1215,7 @@ ksocknal_process_receive (ksock_conn_t *conn)
                 conn->ksnc_rx_nob_wanted = sizeof(ksock_lnet_msg_t);
                 conn->ksnc_rx_nob_left = sizeof(ksock_lnet_msg_t);
 
-                conn->ksnc_rx_iov = (struct iovec *)&conn->ksnc_rx_iov_space;
+               conn->ksnc_rx_iov = (struct kvec *)&conn->ksnc_rx_iov_space;
                 conn->ksnc_rx_iov[0].iov_base = (char *)&conn->ksnc_msg.ksm_u.lnetmsg;
                 conn->ksnc_rx_iov[0].iov_len  = sizeof(ksock_lnet_msg_t);
 
@@ -1312,7 +1314,7 @@ ksocknal_process_receive (ksock_conn_t *conn)
 
 int
 ksocknal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *msg, int delayed,
-               unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
+              unsigned int niov, struct kvec *iov, lnet_kiov_t *kiov,
                unsigned int offset, unsigned int mlen, unsigned int rlen)
 {
         ksock_conn_t  *conn = (ksock_conn_t *)private;
@@ -2137,9 +2139,9 @@ ksocknal_connd (void *arg)
        int                nloops = 0;
        int                cons_retry = 0;
 
-       cfs_block_allsigs ();
+       cfs_block_allsigs();
 
-       init_waitqueue_entry_current(&wait);
+       init_waitqueue_entry(&wait, current);
 
        spin_lock_bh(connd_lock);
 
@@ -2228,7 +2230,7 @@ ksocknal_connd (void *arg)
                spin_unlock_bh(connd_lock);
 
                nloops = 0;
-               waitq_timedwait(&wait, TASK_INTERRUPTIBLE, timeout);
+               schedule_timeout(timeout);
 
                set_current_state(TASK_RUNNING);
                remove_wait_queue(&ksocknal_data.ksnd_connd_waitq, &wait);
@@ -2529,7 +2531,7 @@ int ksocknal_reaper(void *arg)
         cfs_block_allsigs ();
 
        INIT_LIST_HEAD(&enomem_conns);
-       init_waitqueue_entry_current(&wait);
+       init_waitqueue_entry(&wait, current);
 
        spin_lock_bh(&ksocknal_data.ksnd_reaper_lock);
 
@@ -2636,7 +2638,7 @@ int ksocknal_reaper(void *arg)
                if (!ksocknal_data.ksnd_shuttingdown &&
                    list_empty(&ksocknal_data.ksnd_deathrow_conns) &&
                    list_empty(&ksocknal_data.ksnd_zombie_conns))
-                       waitq_timedwait(&wait, TASK_INTERRUPTIBLE, timeout);
+                       schedule_timeout(timeout);
 
                set_current_state(TASK_RUNNING);
                remove_wait_queue(&ksocknal_data.ksnd_reaper_waitq, &wait);