Whamcloud - gitweb
LU-6142 socklnd: change UAPI typedefs to proper structure
[fs/lustre-release.git] / lnet / klnds / socklnd / socklnd_cb.c
index 7879b47..c2f7c57 100644 (file)
@@ -83,7 +83,9 @@ ksocknal_alloc_tx_noop(__u64 cookie, int nonblk)
         tx->tx_niov     = 1;
         tx->tx_nonblk   = nonblk;
 
-        socklnd_init_msg(&tx->tx_msg, KSOCK_MSG_NOOP);
+       tx->tx_msg.ksm_csum = 0;
+       tx->tx_msg.ksm_type = KSOCK_MSG_NOOP;
+       tx->tx_msg.ksm_zc_cookies[0] = 0;
         tx->tx_msg.ksm_zc_cookies[1] = cookie;
 
         return tx;
@@ -110,7 +112,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;
 
@@ -251,7 +253,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;
 
@@ -690,7 +692,7 @@ void
 ksocknal_queue_tx_locked (ksock_tx_t *tx, ksock_conn_t *conn)
 {
         ksock_sched_t *sched = conn->ksnc_scheduler;
-        ksock_msg_t   *msg = &tx->tx_msg;
+       struct ksock_msg   *msg = &tx->tx_msg;
         ksock_tx_t    *ztx = NULL;
         int            bufnob = 0;
 
@@ -927,7 +929,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;
@@ -988,7 +990,10 @@ ksocknal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
                         tx->tx_zc_capable = 1;
         }
 
-        socklnd_init_msg(&tx->tx_msg, KSOCK_MSG_LNET);
+       tx->tx_msg.ksm_csum = 0;
+       tx->tx_msg.ksm_type = KSOCK_MSG_LNET;
+       tx->tx_msg.ksm_zc_cookies[0] = 0;
+       tx->tx_msg.ksm_zc_cookies[1] = 0;
 
         /* The first fragment will be set later in pro_pack */
         rc = ksocknal_launch_packet(ni, tx, target);
@@ -1048,12 +1053,12 @@ 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);
-                        conn->ksnc_rx_nob_left = offsetof(ksock_msg_t, ksm_u);
-                        conn->ksnc_rx_iov[0].iov_len  = offsetof(ksock_msg_t, ksm_u);
+                       conn->ksnc_rx_nob_wanted = offsetof(struct ksock_msg, ksm_u);
+                       conn->ksnc_rx_nob_left = offsetof(struct ksock_msg, ksm_u);
+                       conn->ksnc_rx_iov[0].iov_len  = offsetof(struct ksock_msg, ksm_u);
                         break;
 
                 case KSOCK_PROTO_V1:
@@ -1062,7 +1067,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;
@@ -1083,7 +1088,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;
 
@@ -1097,7 +1102,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;
@@ -1115,8 +1120,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 ||
@@ -1197,7 +1202,7 @@ ksocknal_process_receive (ksock_conn_t *conn)
                                                conn->ksnc_msg.ksm_zc_cookies[1]);
 
                         if (rc != 0) {
-                                CERROR("%s: Unknown ZC-ACK cookie: "LPU64", "LPU64"\n",
+                               CERROR("%s: Unknown ZC-ACK cookie: %llu, %llu\n",
                                        libcfs_id2str(conn->ksnc_peer->ksnp_id),
                                        cookie, conn->ksnc_msg.ksm_zc_cookies[1]);
                                 ksocknal_new_packet(conn, 0);
@@ -1212,12 +1217,12 @@ ksocknal_process_receive (ksock_conn_t *conn)
                 }
 
                 conn->ksnc_rx_state = SOCKNAL_RX_LNET_HEADER;
-                conn->ksnc_rx_nob_wanted = sizeof(ksock_lnet_msg_t);
-                conn->ksnc_rx_nob_left = sizeof(ksock_lnet_msg_t);
+               conn->ksnc_rx_nob_wanted = sizeof(struct ksock_lnet_msg);
+               conn->ksnc_rx_nob_left = sizeof(struct ksock_lnet_msg);
 
-                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);
+               conn->ksnc_rx_iov[0].iov_len  = sizeof(struct ksock_lnet_msg);
 
                 conn->ksnc_rx_niov = 1;
                 conn->ksnc_rx_kiov = NULL;
@@ -1314,7 +1319,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;
@@ -1402,8 +1407,8 @@ int ksocknal_scheduler(void *arg)
 
        rc = cfs_cpt_bind(lnet_cpt_table(), info->ksi_cpt);
        if (rc != 0) {
-               CERROR("Can't set CPT affinity to %d: %d\n",
-                      info->ksi_cpt, rc);
+               CWARN("Can't set CPU partition affinity to %d: %d\n",
+                       info->ksi_cpt, rc);
        }
 
        spin_lock_bh(&sched->kss_lock);
@@ -1612,7 +1617,7 @@ void ksocknal_write_callback(ksock_conn_t *conn)
 }
 
 static ksock_proto_t *
-ksocknal_parse_proto_version (ksock_hello_msg_t *hello)
+ksocknal_parse_proto_version (struct ksock_hello_msg *hello)
 {
         __u32   version = 0;
 
@@ -1643,7 +1648,7 @@ ksocknal_parse_proto_version (ksock_hello_msg_t *hello)
                 lnet_magicversion_t *hmv = (lnet_magicversion_t *)hello;
 
                 CLASSERT (sizeof (lnet_magicversion_t) ==
-                          offsetof (ksock_hello_msg_t, kshm_src_nid));
+                         offsetof (struct ksock_hello_msg, kshm_src_nid));
 
                 if (hmv->version_major == cpu_to_le16 (KSOCK_PROTO_V1_MAJOR) &&
                     hmv->version_minor == cpu_to_le16 (KSOCK_PROTO_V1_MINOR))
@@ -1655,7 +1660,7 @@ ksocknal_parse_proto_version (ksock_hello_msg_t *hello)
 
 int
 ksocknal_send_hello (lnet_ni_t *ni, ksock_conn_t *conn,
-                     lnet_nid_t peer_nid, ksock_hello_msg_t *hello)
+                    lnet_nid_t peer_nid, struct ksock_hello_msg *hello)
 {
         /* CAVEAT EMPTOR: this byte flips 'ipaddrs' */
         ksock_net_t         *net = (ksock_net_t *)ni->ni_data;
@@ -1693,9 +1698,9 @@ ksocknal_invert_type(int type)
 }
 
 int
-ksocknal_recv_hello (lnet_ni_t *ni, ksock_conn_t *conn,
-                     ksock_hello_msg_t *hello, lnet_process_id_t *peerid,
-                     __u64 *incarnation)
+ksocknal_recv_hello(lnet_ni_t *ni, ksock_conn_t *conn,
+                   struct ksock_hello_msg *hello, lnet_process_id_t *peerid,
+                   __u64 *incarnation)
 {
         /* Return < 0        fatal error
          *        0          success
@@ -1987,13 +1992,6 @@ ksocknal_connect (ksock_route_t *route)
                list_splice_init(&peer->ksnp_tx_queue, &zombies);
         }
 
-#if 0           /* irrelevent with only eager routes */
-        if (!route->ksnr_deleted) {
-                /* make this route least-favourite for re-selection */
-               list_del(&route->ksnr_list);
-               list_add_tail(&route->ksnr_list, &peer->ksnp_routes);
-        }
-#endif
        write_unlock_bh(&ksocknal_data.ksnd_global_lock);
 
         ksocknal_peer_failed(peer);
@@ -2429,9 +2427,10 @@ ksocknal_check_peer_timeouts (int idx)
        read_lock(&ksocknal_data.ksnd_global_lock);
 
        list_for_each_entry(peer, peers, ksnp_list) {
-                cfs_time_t  deadline = 0;
-                int         resid = 0;
-                int         n     = 0;
+               ksock_tx_t *tx_stale;
+               cfs_time_t  deadline = 0;
+               int         resid = 0;
+               int         n     = 0;
 
                 if (ksocknal_send_keepalive_locked(peer) != 0) {
                        read_unlock(&ksocknal_data.ksnd_global_lock);
@@ -2475,6 +2474,7 @@ ksocknal_check_peer_timeouts (int idx)
                if (list_empty(&peer->ksnp_zc_req_list))
                         continue;
 
+               tx_stale = NULL;
                spin_lock(&peer->ksnp_lock);
                list_for_each_entry(tx, &peer->ksnp_zc_req_list, tx_zc_list) {
                         if (!cfs_time_aftereq(cfs_time_current(),
@@ -2484,28 +2484,28 @@ ksocknal_check_peer_timeouts (int idx)
                         if (tx->tx_conn->ksnc_closing)
                                 continue;
                         n++;
+                       if (tx_stale == NULL)
+                               tx_stale = tx;
                 }
 
-                if (n == 0) {
+               if (tx_stale == NULL) {
                        spin_unlock(&peer->ksnp_lock);
-                        continue;
-                }
+                       continue;
+               }
 
-               tx = list_entry(peer->ksnp_zc_req_list.next,
-                                    ksock_tx_t, tx_zc_list);
-                deadline = tx->tx_deadline;
-                resid    = tx->tx_resid;
-                conn     = tx->tx_conn;
-                ksocknal_conn_addref(conn);
+               deadline = tx_stale->tx_deadline;
+               resid    = tx_stale->tx_resid;
+               conn     = tx_stale->tx_conn;
+               ksocknal_conn_addref(conn);
 
                spin_unlock(&peer->ksnp_lock);
                read_unlock(&ksocknal_data.ksnd_global_lock);
 
-                CERROR("Total %d stale ZC_REQs for peer %s detected; the "
-                       "oldest(%p) timed out %ld secs ago, "
-                       "resid: %d, wmem: %d\n",
-                       n, libcfs_nid2str(peer->ksnp_id.nid), tx,
-                       cfs_duration_sec(cfs_time_current() - deadline),
+               CERROR("Total %d stale ZC_REQs for peer %s detected; the "
+                      "oldest(%p) timed out %ld secs ago, "
+                      "resid: %d, wmem: %d\n",
+                      n, libcfs_nid2str(peer->ksnp_id.nid), tx_stale,
+                      cfs_duration_sec(cfs_time_current() - deadline),
                       resid, conn->ksnc_sock->sk->sk_wmem_queued);
 
                 ksocknal_close_conn_and_siblings (conn, -ETIMEDOUT);