diff options
Diffstat (limited to 'drivers/staging/lustre/lnet/klnds')
9 files changed, 210 insertions, 274 deletions
diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c index b1e8508..79321e4 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c @@ -38,7 +38,7 @@ #include <asm/page.h> #include "o2iblnd.h" -static lnd_t the_o2iblnd; +static struct lnet_lnd the_o2iblnd; struct kib_data kiblnd_data; @@ -174,7 +174,7 @@ static int kiblnd_unpack_rd(struct kib_msg *msg, int flip) return 0; } -void kiblnd_pack_msg(lnet_ni_t *ni, struct kib_msg *msg, int version, +void kiblnd_pack_msg(struct lnet_ni *ni, struct kib_msg *msg, int version, int credits, lnet_nid_t dstnid, __u64 dststamp) { struct kib_net *net = ni->ni_data; @@ -313,7 +313,8 @@ int kiblnd_unpack_msg(struct kib_msg *msg, int nob) return 0; } -int kiblnd_create_peer(lnet_ni_t *ni, struct kib_peer **peerp, lnet_nid_t nid) +int kiblnd_create_peer(struct lnet_ni *ni, struct kib_peer **peerp, + lnet_nid_t nid) { struct kib_peer *peer; struct kib_net *net = ni->ni_data; @@ -412,7 +413,7 @@ void kiblnd_unlink_peer_locked(struct kib_peer *peer) kiblnd_peer_decref(peer); } -static int kiblnd_get_peer_info(lnet_ni_t *ni, int index, +static int kiblnd_get_peer_info(struct lnet_ni *ni, int index, lnet_nid_t *nidp, int *count) { struct kib_peer *peer; @@ -468,7 +469,7 @@ static void kiblnd_del_peer_locked(struct kib_peer *peer) */ } -static int kiblnd_del_peer(lnet_ni_t *ni, lnet_nid_t nid) +static int kiblnd_del_peer(struct lnet_ni *ni, lnet_nid_t nid) { LIST_HEAD(zombies); struct list_head *ptmp; @@ -520,7 +521,7 @@ static int kiblnd_del_peer(lnet_ni_t *ni, lnet_nid_t nid) return rc; } -static struct kib_conn *kiblnd_get_conn_by_idx(lnet_ni_t *ni, int index) +static struct kib_conn *kiblnd_get_conn_by_idx(struct lnet_ni *ni, int index) { struct kib_peer *peer; struct list_head *ptmp; @@ -947,7 +948,7 @@ int kiblnd_close_stale_conns_locked(struct kib_peer *peer, return count; } -static int kiblnd_close_matching_conns(lnet_ni_t *ni, lnet_nid_t nid) +static int kiblnd_close_matching_conns(struct lnet_ni *ni, lnet_nid_t nid) { struct kib_peer *peer; struct list_head *ptmp; @@ -992,7 +993,7 @@ static int kiblnd_close_matching_conns(lnet_ni_t *ni, lnet_nid_t nid) return !count ? -ENOENT : 0; } -static int kiblnd_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg) +static int kiblnd_ctl(struct lnet_ni *ni, unsigned int cmd, void *arg) { struct libcfs_ioctl_data *data = arg; int rc = -EINVAL; @@ -1045,7 +1046,8 @@ static int kiblnd_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg) return rc; } -static void kiblnd_query(lnet_ni_t *ni, lnet_nid_t nid, unsigned long *when) +static void kiblnd_query(struct lnet_ni *ni, lnet_nid_t nid, + unsigned long *when) { unsigned long last_alive = 0; unsigned long now = cfs_time_current(); @@ -1281,27 +1283,6 @@ static void kiblnd_map_tx_pool(struct kib_tx_pool *tpo) } } -struct ib_mr *kiblnd_find_rd_dma_mr(struct lnet_ni *ni, struct kib_rdma_desc *rd, - int negotiated_nfrags) -{ - struct kib_net *net = ni->ni_data; - struct kib_hca_dev *hdev = net->ibn_dev->ibd_hdev; - struct lnet_ioctl_config_o2iblnd_tunables *tunables; - __u16 nfrags; - int mod; - - tunables = &ni->ni_lnd_tunables->lt_tun_u.lt_o2ib; - mod = tunables->lnd_map_on_demand; - nfrags = (negotiated_nfrags != -1) ? negotiated_nfrags : mod; - - LASSERT(hdev->ibh_mrs); - - if (mod > 0 && nfrags <= rd->rd_nfrags) - return NULL; - - return hdev->ibh_mrs; -} - static void kiblnd_destroy_fmr_pool(struct kib_fmr_pool *fpo) { LASSERT(!fpo->fpo_map_count); @@ -2058,7 +2039,7 @@ static int kiblnd_create_tx_pool(struct kib_poolset *ps, int size, tpo->tpo_tx_descs = NULL; tpo->tpo_tx_pages = NULL; - npg = (size * IBLND_MSG_SIZE + PAGE_SIZE - 1) / PAGE_SIZE; + npg = DIV_ROUND_UP(size * IBLND_MSG_SIZE, PAGE_SIZE); if (kiblnd_alloc_pages(&tpo->tpo_tx_pages, ps->ps_cpt, npg)) { CERROR("Can't allocate tx pages: %d\n", npg); LIBCFS_FREE(tpo, sizeof(*tpo)); @@ -2164,25 +2145,16 @@ static void kiblnd_net_fini_pools(struct kib_net *net) } } -static int kiblnd_net_init_pools(struct kib_net *net, lnet_ni_t *ni, __u32 *cpts, - int ncpts) +static int kiblnd_net_init_pools(struct kib_net *net, struct lnet_ni *ni, + __u32 *cpts, int ncpts) { struct lnet_ioctl_config_o2iblnd_tunables *tunables; - unsigned long flags; int cpt; int rc; int i; tunables = &ni->ni_lnd_tunables->lt_tun_u.lt_o2ib; - read_lock_irqsave(&kiblnd_data.kib_global_lock, flags); - if (!tunables->lnd_map_on_demand) { - read_unlock_irqrestore(&kiblnd_data.kib_global_lock, flags); - goto create_tx_pool; - } - - read_unlock_irqrestore(&kiblnd_data.kib_global_lock, flags); - if (tunables->lnd_fmr_pool_size < *kiblnd_tunables.kib_ntx / 4) { CERROR("Can't set fmr pool size (%d) < ntx / 4(%d)\n", tunables->lnd_fmr_pool_size, @@ -2227,7 +2199,6 @@ static int kiblnd_net_init_pools(struct kib_net *net, lnet_ni_t *ni, __u32 *cpts if (i > 0) LASSERT(i == ncpts); - create_tx_pool: /* * cfs_precpt_alloc is creating an array of struct kib_tx_poolset * The number of struct kib_tx_poolsets create is equal to the @@ -2283,20 +2254,8 @@ static int kiblnd_hdev_get_attr(struct kib_hca_dev *hdev) return -EINVAL; } -static void kiblnd_hdev_cleanup_mrs(struct kib_hca_dev *hdev) -{ - if (!hdev->ibh_mrs) - return; - - ib_dereg_mr(hdev->ibh_mrs); - - hdev->ibh_mrs = NULL; -} - void kiblnd_hdev_destroy(struct kib_hca_dev *hdev) { - kiblnd_hdev_cleanup_mrs(hdev); - if (hdev->ibh_pd) ib_dealloc_pd(hdev->ibh_pd); @@ -2306,28 +2265,6 @@ void kiblnd_hdev_destroy(struct kib_hca_dev *hdev) LIBCFS_FREE(hdev, sizeof(*hdev)); } -static int kiblnd_hdev_setup_mrs(struct kib_hca_dev *hdev) -{ - struct ib_mr *mr; - int rc; - int acflags = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE; - - rc = kiblnd_hdev_get_attr(hdev); - if (rc) - return rc; - - mr = ib_get_dma_mr(hdev->ibh_pd, acflags); - if (IS_ERR(mr)) { - CERROR("Failed ib_get_dma_mr : %ld\n", PTR_ERR(mr)); - kiblnd_hdev_cleanup_mrs(hdev); - return PTR_ERR(mr); - } - - hdev->ibh_mrs = mr; - - return 0; -} - /* DUMMY */ static int kiblnd_dummy_callback(struct rdma_cm_id *cmid, struct rdma_cm_event *event) @@ -2482,9 +2419,9 @@ int kiblnd_dev_failover(struct kib_dev *dev) goto out; } - rc = kiblnd_hdev_setup_mrs(hdev); + rc = kiblnd_hdev_get_attr(hdev); if (rc) { - CERROR("Can't setup device: %d\n", rc); + CERROR("Can't get device attributes: %d\n", rc); goto out; } @@ -2652,7 +2589,7 @@ static void kiblnd_base_shutdown(void) module_put(THIS_MODULE); } -static void kiblnd_shutdown(lnet_ni_t *ni) +static void kiblnd_shutdown(struct lnet_ni *ni) { struct kib_net *net = ni->ni_data; rwlock_t *g_lock = &kiblnd_data.kib_global_lock; @@ -2909,7 +2846,7 @@ static struct kib_dev *kiblnd_dev_search(char *ifname) return alias; } -static int kiblnd_startup(lnet_ni_t *ni) +static int kiblnd_startup(struct lnet_ni *ni) { char *ifname; struct kib_dev *ibdev = NULL; @@ -3003,7 +2940,7 @@ net_failed: return -ENETDOWN; } -static lnd_t the_o2iblnd = { +static struct lnet_lnd the_o2iblnd = { .lnd_type = O2IBLND, .lnd_startup = kiblnd_startup, .lnd_shutdown = kiblnd_shutdown, @@ -3021,12 +2958,12 @@ static void __exit ko2iblnd_exit(void) static int __init ko2iblnd_init(void) { BUILD_BUG_ON(sizeof(struct kib_msg) > IBLND_MSG_SIZE); - BUILD_BUG_ON(!offsetof(struct kib_msg, + BUILD_BUG_ON(offsetof(struct kib_msg, ibm_u.get.ibgm_rd.rd_frags[IBLND_MAX_RDMA_FRAGS]) - <= IBLND_MSG_SIZE); - BUILD_BUG_ON(!offsetof(struct kib_msg, + > IBLND_MSG_SIZE); + BUILD_BUG_ON(offsetof(struct kib_msg, ibm_u.putack.ibpam_rd.rd_frags[IBLND_MAX_RDMA_FRAGS]) - <= IBLND_MSG_SIZE); + > IBLND_MSG_SIZE); kiblnd_tunables_init(); diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h index 2cb4298..16e437b 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h @@ -172,7 +172,6 @@ struct kib_hca_dev { __u64 ibh_page_mask; /* page mask of current HCA */ int ibh_mr_shift; /* bits shift of max MR size */ __u64 ibh_mr_size; /* size of MR */ - struct ib_mr *ibh_mrs; /* global MR */ struct ib_pd *ibh_pd; /* PD */ struct kib_dev *ibh_dev; /* owner */ atomic_t ibh_ref; /* refcount */ @@ -491,7 +490,7 @@ struct kib_tx { /* transmit message */ int tx_status; /* LNET completion status */ unsigned long tx_deadline; /* completion deadline */ __u64 tx_cookie; /* completion cookie */ - lnet_msg_t *tx_lntmsg[2]; /* lnet msgs to finalize on completion */ + struct lnet_msg *tx_lntmsg[2]; /* lnet msgs to finalize on completion */ struct kib_msg *tx_msg; /* message buffer (host vaddr) */ __u64 tx_msgaddr; /* message buffer (I/O addr) */ DECLARE_PCI_UNMAP_ADDR(tx_msgunmap); /* for dma_unmap_single() */ @@ -567,7 +566,7 @@ struct kib_conn { struct kib_peer { struct list_head ibp_list; /* stash on global peer list */ lnet_nid_t ibp_nid; /* who's on the other end(s) */ - lnet_ni_t *ibp_ni; /* LNet interface */ + struct lnet_ni *ibp_ni; /* LNet interface */ struct list_head ibp_conns; /* all active connections */ struct list_head ibp_tx_queue; /* msgs waiting for a conn */ __u64 ibp_incarnation; /* incarnation of peer */ @@ -764,7 +763,7 @@ static inline int kiblnd_need_noop(struct kib_conn *conn) { struct lnet_ioctl_config_o2iblnd_tunables *tunables; - lnet_ni_t *ni = conn->ibc_peer->ibp_ni; + struct lnet_ni *ni = conn->ibc_peer->ibp_ni; LASSERT(conn->ibc_state >= IBLND_CONN_ESTABLISHED); tunables = &ni->ni_lnd_tunables->lt_tun_u.lt_o2ib; @@ -978,8 +977,6 @@ static inline unsigned int kiblnd_sg_dma_len(struct ib_device *dev, #define KIBLND_CONN_PARAM(e) ((e)->param.conn.private_data) #define KIBLND_CONN_PARAM_LEN(e) ((e)->param.conn.private_data_len) -struct ib_mr *kiblnd_find_rd_dma_mr(struct lnet_ni *ni, struct kib_rdma_desc *rd, - int negotiated_nfrags); void kiblnd_map_rx_descs(struct kib_conn *conn); void kiblnd_unmap_rx_descs(struct kib_conn *conn); void kiblnd_pool_free_node(struct kib_pool *pool, struct list_head *node); @@ -1005,7 +1002,8 @@ int kiblnd_cm_callback(struct rdma_cm_id *cmid, int kiblnd_translate_mtu(int value); int kiblnd_dev_failover(struct kib_dev *dev); -int kiblnd_create_peer(lnet_ni_t *ni, struct kib_peer **peerp, lnet_nid_t nid); +int kiblnd_create_peer(struct lnet_ni *ni, struct kib_peer **peerp, + lnet_nid_t nid); void kiblnd_destroy_peer(struct kib_peer *peer); bool kiblnd_reconnect_peer(struct kib_peer *peer); void kiblnd_destroy_dev(struct kib_dev *dev); @@ -1022,19 +1020,19 @@ void kiblnd_destroy_conn(struct kib_conn *conn, bool free_conn); void kiblnd_close_conn(struct kib_conn *conn, int error); void kiblnd_close_conn_locked(struct kib_conn *conn, int error); -void kiblnd_launch_tx(lnet_ni_t *ni, struct kib_tx *tx, lnet_nid_t nid); -void kiblnd_txlist_done(lnet_ni_t *ni, struct list_head *txlist, +void kiblnd_launch_tx(struct lnet_ni *ni, struct kib_tx *tx, lnet_nid_t nid); +void kiblnd_txlist_done(struct lnet_ni *ni, struct list_head *txlist, int status); void kiblnd_qp_event(struct ib_event *event, void *arg); void kiblnd_cq_event(struct ib_event *event, void *arg); void kiblnd_cq_completion(struct ib_cq *cq, void *arg); -void kiblnd_pack_msg(lnet_ni_t *ni, struct kib_msg *msg, int version, +void kiblnd_pack_msg(struct lnet_ni *ni, struct kib_msg *msg, int version, int credits, lnet_nid_t dstnid, __u64 dststamp); int kiblnd_unpack_msg(struct kib_msg *msg, int nob); int kiblnd_post_rx(struct kib_rx *rx, int credit); -int kiblnd_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg); -int kiblnd_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, - struct iov_iter *to, unsigned int rlen); +int kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg); +int kiblnd_recv(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg, + int delayed, struct iov_iter *to, unsigned int rlen); diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c index e2f3f72..0db662d 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c @@ -40,20 +40,20 @@ static void kiblnd_peer_alive(struct kib_peer *peer); static void kiblnd_peer_connect_failed(struct kib_peer *peer, int active, int error); -static void kiblnd_init_tx_msg(lnet_ni_t *ni, struct kib_tx *tx, +static void kiblnd_init_tx_msg(struct lnet_ni *ni, struct kib_tx *tx, int type, int body_nob); static int kiblnd_init_rdma(struct kib_conn *conn, struct kib_tx *tx, int type, int resid, struct kib_rdma_desc *dstrd, __u64 dstcookie); static void kiblnd_queue_tx_locked(struct kib_tx *tx, struct kib_conn *conn); static void kiblnd_queue_tx(struct kib_tx *tx, struct kib_conn *conn); -static void kiblnd_unmap_tx(lnet_ni_t *ni, struct kib_tx *tx); +static void kiblnd_unmap_tx(struct lnet_ni *ni, struct kib_tx *tx); static void kiblnd_check_sends_locked(struct kib_conn *conn); static void -kiblnd_tx_done(lnet_ni_t *ni, struct kib_tx *tx) +kiblnd_tx_done(struct lnet_ni *ni, struct kib_tx *tx) { - lnet_msg_t *lntmsg[2]; + struct lnet_msg *lntmsg[2]; struct kib_net *net = ni->ni_data; int rc; int i; @@ -94,7 +94,7 @@ kiblnd_tx_done(lnet_ni_t *ni, struct kib_tx *tx) } void -kiblnd_txlist_done(lnet_ni_t *ni, struct list_head *txlist, int status) +kiblnd_txlist_done(struct lnet_ni *ni, struct list_head *txlist, int status) { struct kib_tx *tx; @@ -110,7 +110,7 @@ kiblnd_txlist_done(lnet_ni_t *ni, struct list_head *txlist, int status) } static struct kib_tx * -kiblnd_get_idle_tx(lnet_ni_t *ni, lnet_nid_t target) +kiblnd_get_idle_tx(struct lnet_ni *ni, lnet_nid_t target) { struct kib_net *net = (struct kib_net *)ni->ni_data; struct list_head *node; @@ -157,7 +157,6 @@ kiblnd_post_rx(struct kib_rx *rx, int credit) struct kib_conn *conn = rx->rx_conn; struct kib_net *net = conn->ibc_peer->ibp_ni->ni_data; struct ib_recv_wr *bad_wrq = NULL; - struct ib_mr *mr = conn->ibc_hdev->ibh_mrs; int rc; LASSERT(net); @@ -165,9 +164,8 @@ kiblnd_post_rx(struct kib_rx *rx, int credit) LASSERT(credit == IBLND_POSTRX_NO_CREDIT || credit == IBLND_POSTRX_PEER_CREDIT || credit == IBLND_POSTRX_RSRVD_CREDIT); - LASSERT(mr); - rx->rx_sge.lkey = mr->lkey; + rx->rx_sge.lkey = conn->ibc_hdev->ibh_pd->local_dma_lkey; rx->rx_sge.addr = rx->rx_msgaddr; rx->rx_sge.length = IBLND_MSG_SIZE; @@ -251,7 +249,7 @@ static void kiblnd_handle_completion(struct kib_conn *conn, int txtype, int status, __u64 cookie) { struct kib_tx *tx; - lnet_ni_t *ni = conn->ibc_peer->ibp_ni; + struct lnet_ni *ni = conn->ibc_peer->ibp_ni; int idle; spin_lock(&conn->ibc_lock); @@ -288,7 +286,7 @@ kiblnd_handle_completion(struct kib_conn *conn, int txtype, int status, __u64 co static void kiblnd_send_completion(struct kib_conn *conn, int type, int status, __u64 cookie) { - lnet_ni_t *ni = conn->ibc_peer->ibp_ni; + struct lnet_ni *ni = conn->ibc_peer->ibp_ni; struct kib_tx *tx = kiblnd_get_idle_tx(ni, conn->ibc_peer->ibp_nid); if (!tx) { @@ -309,7 +307,7 @@ kiblnd_handle_rx(struct kib_rx *rx) { struct kib_msg *msg = rx->rx_msg; struct kib_conn *conn = rx->rx_conn; - lnet_ni_t *ni = conn->ibc_peer->ibp_ni; + struct lnet_ni *ni = conn->ibc_peer->ibp_ni; int credits = msg->ibm_credits; struct kib_tx *tx; int rc = 0; @@ -470,7 +468,7 @@ kiblnd_rx_complete(struct kib_rx *rx, int status, int nob) { struct kib_msg *msg = rx->rx_msg; struct kib_conn *conn = rx->rx_conn; - lnet_ni_t *ni = conn->ibc_peer->ibp_ni; + struct lnet_ni *ni = conn->ibc_peer->ibp_ni; struct kib_net *net = ni->ni_data; int rc; int err = -EIO; @@ -592,7 +590,7 @@ kiblnd_fmr_map_tx(struct kib_net *net, struct kib_tx *tx, struct kib_rdma_desc * return 0; } -static void kiblnd_unmap_tx(lnet_ni_t *ni, struct kib_tx *tx) +static void kiblnd_unmap_tx(struct lnet_ni *ni, struct kib_tx *tx) { struct kib_net *net = ni->ni_data; @@ -608,12 +606,11 @@ static void kiblnd_unmap_tx(lnet_ni_t *ni, struct kib_tx *tx) } } -static int kiblnd_map_tx(lnet_ni_t *ni, struct kib_tx *tx, struct kib_rdma_desc *rd, - int nfrags) +static int kiblnd_map_tx(struct lnet_ni *ni, struct kib_tx *tx, + struct kib_rdma_desc *rd, int nfrags) { struct kib_net *net = ni->ni_data; struct kib_hca_dev *hdev = net->ibn_dev->ibd_hdev; - struct ib_mr *mr = NULL; __u32 nob; int i; @@ -635,14 +632,6 @@ static int kiblnd_map_tx(lnet_ni_t *ni, struct kib_tx *tx, struct kib_rdma_desc nob += rd->rd_frags[i].rf_nob; } - mr = kiblnd_find_rd_dma_mr(ni, rd, tx->tx_conn ? - tx->tx_conn->ibc_max_frags : -1); - if (mr) { - /* found pre-mapping MR */ - rd->rd_key = (rd != tx->tx_rd) ? mr->rkey : mr->lkey; - return 0; - } - if (net->ibn_fmr_ps) return kiblnd_fmr_map_tx(net, tx, rd, nob); @@ -650,8 +639,9 @@ static int kiblnd_map_tx(lnet_ni_t *ni, struct kib_tx *tx, struct kib_rdma_desc } static int -kiblnd_setup_rd_iov(lnet_ni_t *ni, struct kib_tx *tx, struct kib_rdma_desc *rd, - unsigned int niov, const struct kvec *iov, int offset, int nob) +kiblnd_setup_rd_iov(struct lnet_ni *ni, struct kib_tx *tx, + struct kib_rdma_desc *rd, unsigned int niov, + const struct kvec *iov, int offset, int nob) { struct kib_net *net = ni->ni_data; struct page *page; @@ -707,8 +697,9 @@ kiblnd_setup_rd_iov(lnet_ni_t *ni, struct kib_tx *tx, struct kib_rdma_desc *rd, } static int -kiblnd_setup_rd_kiov(lnet_ni_t *ni, struct kib_tx *tx, struct kib_rdma_desc *rd, - int nkiov, const lnet_kiov_t *kiov, int offset, int nob) +kiblnd_setup_rd_kiov(struct lnet_ni *ni, struct kib_tx *tx, + struct kib_rdma_desc *rd, int nkiov, + const struct bio_vec *kiov, int offset, int nob) { struct kib_net *net = ni->ni_data; struct scatterlist *sg; @@ -910,7 +901,7 @@ static void kiblnd_check_sends_locked(struct kib_conn *conn) { int ver = conn->ibc_version; - lnet_ni_t *ni = conn->ibc_peer->ibp_ni; + struct lnet_ni *ni = conn->ibc_peer->ibp_ni; struct kib_tx *tx; /* Don't send anything until after the connection is established */ @@ -1022,22 +1013,21 @@ kiblnd_tx_complete(struct kib_tx *tx, int status) } static void -kiblnd_init_tx_msg(lnet_ni_t *ni, struct kib_tx *tx, int type, int body_nob) +kiblnd_init_tx_msg(struct lnet_ni *ni, struct kib_tx *tx, int type, + int body_nob) { struct kib_hca_dev *hdev = tx->tx_pool->tpo_hdev; struct ib_sge *sge = &tx->tx_sge[tx->tx_nwrq]; struct ib_rdma_wr *wrq = &tx->tx_wrq[tx->tx_nwrq]; int nob = offsetof(struct kib_msg, ibm_u) + body_nob; - struct ib_mr *mr = hdev->ibh_mrs; LASSERT(tx->tx_nwrq >= 0); LASSERT(tx->tx_nwrq < IBLND_MAX_RDMA_FRAGS + 1); LASSERT(nob <= IBLND_MSG_SIZE); - LASSERT(mr); kiblnd_init_msg(tx->tx_msg, type, body_nob); - sge->lkey = mr->lkey; + sge->lkey = hdev->ibh_pd->local_dma_lkey; sge->addr = tx->tx_msgaddr; sge->length = nob; @@ -1103,9 +1093,9 @@ kiblnd_init_rdma(struct kib_conn *conn, struct kib_tx *tx, int type, break; } - wrknob = min(min(kiblnd_rd_frag_size(srcrd, srcidx), - kiblnd_rd_frag_size(dstrd, dstidx)), - (__u32)resid); + wrknob = min3(kiblnd_rd_frag_size(srcrd, srcidx), + kiblnd_rd_frag_size(dstrd, dstidx), + (__u32)resid); sge = &tx->tx_sge[tx->tx_nwrq]; sge->addr = kiblnd_rd_frag_addr(srcrd, srcidx); @@ -1366,7 +1356,7 @@ no_reconnect: } void -kiblnd_launch_tx(lnet_ni_t *ni, struct kib_tx *tx, lnet_nid_t nid) +kiblnd_launch_tx(struct lnet_ni *ni, struct kib_tx *tx, lnet_nid_t nid) { struct kib_peer *peer; struct kib_peer *peer2; @@ -1488,16 +1478,16 @@ kiblnd_launch_tx(lnet_ni_t *ni, struct kib_tx *tx, lnet_nid_t nid) } int -kiblnd_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) +kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg) { struct lnet_hdr *hdr = &lntmsg->msg_hdr; int type = lntmsg->msg_type; - lnet_process_id_t target = lntmsg->msg_target; + struct lnet_process_id target = lntmsg->msg_target; int target_is_router = lntmsg->msg_target_is_router; int routing = lntmsg->msg_routing; unsigned int payload_niov = lntmsg->msg_niov; struct kvec *payload_iov = lntmsg->msg_iov; - lnet_kiov_t *payload_kiov = lntmsg->msg_kiov; + struct bio_vec *payload_kiov = lntmsg->msg_kiov; unsigned int payload_offset = lntmsg->msg_offset; unsigned int payload_nob = lntmsg->msg_len; struct iov_iter from; @@ -1661,12 +1651,12 @@ kiblnd_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) } static void -kiblnd_reply(lnet_ni_t *ni, struct kib_rx *rx, lnet_msg_t *lntmsg) +kiblnd_reply(struct lnet_ni *ni, struct kib_rx *rx, struct lnet_msg *lntmsg) { - lnet_process_id_t target = lntmsg->msg_target; + struct lnet_process_id target = lntmsg->msg_target; unsigned int niov = lntmsg->msg_niov; struct kvec *iov = lntmsg->msg_iov; - lnet_kiov_t *kiov = lntmsg->msg_kiov; + struct bio_vec *kiov = lntmsg->msg_kiov; unsigned int offset = lntmsg->msg_offset; unsigned int nob = lntmsg->msg_len; struct kib_tx *tx; @@ -1722,8 +1712,8 @@ kiblnd_reply(lnet_ni_t *ni, struct kib_rx *rx, lnet_msg_t *lntmsg) } int -kiblnd_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, - struct iov_iter *to, unsigned int rlen) +kiblnd_recv(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg, + int delayed, struct iov_iter *to, unsigned int rlen) { struct kib_rx *rx = private; struct kib_msg *rxmsg = rx->rx_msg; @@ -2170,7 +2160,7 @@ kiblnd_connreq_done(struct kib_conn *conn, int status) if (!kiblnd_peer_active(peer) || /* peer has been deleted */ conn->ibc_comms_error) { /* error has happened already */ - lnet_ni_t *ni = peer->ibp_ni; + struct lnet_ni *ni = peer->ibp_ni; /* start to shut down connection */ kiblnd_close_conn_locked(conn, -ECONNABORTED); @@ -2227,7 +2217,7 @@ kiblnd_passive_connect(struct rdma_cm_id *cmid, void *priv, int priv_nob) struct kib_peer *peer; struct kib_peer *peer2; struct kib_conn *conn; - lnet_ni_t *ni = NULL; + struct lnet_ni *ni = NULL; struct kib_net *net = NULL; lnet_nid_t nid; struct rdma_conn_param cp; @@ -2789,7 +2779,7 @@ static void kiblnd_check_connreply(struct kib_conn *conn, void *priv, int priv_nob) { struct kib_peer *peer = conn->ibc_peer; - lnet_ni_t *ni = peer->ibp_ni; + struct lnet_ni *ni = peer->ibp_ni; struct kib_net *net = ni->ni_data; struct kib_msg *msg = priv; int ver = conn->ibc_version; diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c index 44e960f..3fe4d48 100644 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_modparams.c @@ -106,7 +106,8 @@ static int concurrent_sends; module_param(concurrent_sends, int, 0444); MODULE_PARM_DESC(concurrent_sends, "send work-queue sizing"); -static int map_on_demand; +#define IBLND_DEFAULT_MAP_ON_DEMAND IBLND_MAX_RDMA_FRAGS +static int map_on_demand = IBLND_DEFAULT_MAP_ON_DEMAND; module_param(map_on_demand, int, 0444); MODULE_PARM_DESC(map_on_demand, "map on demand"); @@ -160,7 +161,7 @@ struct kib_tunables kiblnd_tunables = { static struct lnet_ioctl_config_o2iblnd_tunables default_tunables; /* # messages/RDMAs in-flight */ -int kiblnd_msg_queue_size(int version, lnet_ni_t *ni) +int kiblnd_msg_queue_size(int version, struct lnet_ni *ni) { if (version == IBLND_MSG_VERSION_1) return IBLND_MSG_QUEUE_SIZE_V1; @@ -228,10 +229,13 @@ int kiblnd_tunables_setup(struct lnet_ni *ni) if (tunables->lnd_peercredits_hiw >= ni->ni_peertxcredits) tunables->lnd_peercredits_hiw = ni->ni_peertxcredits - 1; - if (tunables->lnd_map_on_demand < 0 || + if (tunables->lnd_map_on_demand <= 0 || tunables->lnd_map_on_demand > IBLND_MAX_RDMA_FRAGS) { - /* disable map-on-demand */ - tunables->lnd_map_on_demand = 0; + /* Use the default */ + CWARN("Invalid map_on_demand (%d), expects 1 - %d. Using default of %d\n", + tunables->lnd_map_on_demand, + IBLND_MAX_RDMA_FRAGS, IBLND_DEFAULT_MAP_ON_DEMAND); + tunables->lnd_map_on_demand = IBLND_DEFAULT_MAP_ON_DEMAND; } if (tunables->lnd_map_on_demand == 1) { diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c index f25de3d..fbbd8a5 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c @@ -39,11 +39,11 @@ #include "socklnd.h" -static lnd_t the_ksocklnd; +static struct lnet_lnd the_ksocklnd; struct ksock_nal_data ksocknal_data; static struct ksock_interface * -ksocknal_ip2iface(lnet_ni_t *ni, __u32 ip) +ksocknal_ip2iface(struct lnet_ni *ni, __u32 ip) { struct ksock_net *net = ni->ni_data; int i; @@ -96,8 +96,8 @@ ksocknal_destroy_route(struct ksock_route *route) } static int -ksocknal_create_peer(struct ksock_peer **peerp, lnet_ni_t *ni, - lnet_process_id_t id) +ksocknal_create_peer(struct ksock_peer **peerp, struct lnet_ni *ni, + struct lnet_process_id id) { int cpt = lnet_cpt_of_nid(id.nid); struct ksock_net *net = ni->ni_data; @@ -173,7 +173,7 @@ ksocknal_destroy_peer(struct ksock_peer *peer) } struct ksock_peer * -ksocknal_find_peer_locked(lnet_ni_t *ni, lnet_process_id_t id) +ksocknal_find_peer_locked(struct lnet_ni *ni, struct lnet_process_id id) { struct list_head *peer_list = ksocknal_nid2peerlist(id.nid); struct list_head *tmp; @@ -200,7 +200,7 @@ ksocknal_find_peer_locked(lnet_ni_t *ni, lnet_process_id_t id) } struct ksock_peer * -ksocknal_find_peer(lnet_ni_t *ni, lnet_process_id_t id) +ksocknal_find_peer(struct lnet_ni *ni, struct lnet_process_id id) { struct ksock_peer *peer; @@ -246,8 +246,8 @@ ksocknal_unlink_peer_locked(struct ksock_peer *peer) } static int -ksocknal_get_peer_info(lnet_ni_t *ni, int index, - lnet_process_id_t *id, __u32 *myip, __u32 *peer_ip, +ksocknal_get_peer_info(struct lnet_ni *ni, int index, + struct lnet_process_id *id, __u32 *myip, __u32 *peer_ip, int *port, int *conn_count, int *share_count) { struct ksock_peer *peer; @@ -450,7 +450,8 @@ ksocknal_del_route_locked(struct ksock_route *route) } int -ksocknal_add_peer(lnet_ni_t *ni, lnet_process_id_t id, __u32 ipaddr, int port) +ksocknal_add_peer(struct lnet_ni *ni, struct lnet_process_id id, __u32 ipaddr, + int port) { struct list_head *tmp; struct ksock_peer *peer; @@ -568,7 +569,7 @@ ksocknal_del_peer_locked(struct ksock_peer *peer, __u32 ip) } static int -ksocknal_del_peer(lnet_ni_t *ni, lnet_process_id_t id, __u32 ip) +ksocknal_del_peer(struct lnet_ni *ni, struct lnet_process_id id, __u32 ip) { LIST_HEAD(zombies); struct list_head *ptmp; @@ -627,7 +628,7 @@ ksocknal_del_peer(lnet_ni_t *ni, lnet_process_id_t id, __u32 ip) } static struct ksock_conn * -ksocknal_get_conn_by_idx(lnet_ni_t *ni, int index) +ksocknal_get_conn_by_idx(struct lnet_ni *ni, int index) { struct ksock_peer *peer; struct list_head *ptmp; @@ -687,7 +688,7 @@ ksocknal_choose_scheduler_locked(unsigned int cpt) } static int -ksocknal_local_ipvec(lnet_ni_t *ni, __u32 *ipaddrs) +ksocknal_local_ipvec(struct lnet_ni *ni, __u32 *ipaddrs) { struct ksock_net *net = ni->ni_data; int i; @@ -866,7 +867,7 @@ ksocknal_create_routes(struct ksock_peer *peer, int port, { struct ksock_route *newroute = NULL; rwlock_t *global_lock = &ksocknal_data.ksnd_global_lock; - lnet_ni_t *ni = peer->ksnp_ni; + struct lnet_ni *ni = peer->ksnp_ni; struct ksock_net *net = ni->ni_data; struct list_head *rtmp; struct ksock_route *route; @@ -982,7 +983,7 @@ ksocknal_create_routes(struct ksock_peer *peer, int port, } int -ksocknal_accept(lnet_ni_t *ni, struct socket *sock) +ksocknal_accept(struct lnet_ni *ni, struct socket *sock) { struct ksock_connreq *cr; int rc; @@ -1025,12 +1026,12 @@ ksocknal_connecting(struct ksock_peer *peer, __u32 ipaddr) } int -ksocknal_create_conn(lnet_ni_t *ni, struct ksock_route *route, +ksocknal_create_conn(struct lnet_ni *ni, struct ksock_route *route, struct socket *sock, int type) { rwlock_t *global_lock = &ksocknal_data.ksnd_global_lock; LIST_HEAD(zombies); - lnet_process_id_t peerid; + struct lnet_process_id peerid; struct list_head *tmp; __u64 incarnation; struct ksock_conn *conn; @@ -1038,7 +1039,7 @@ ksocknal_create_conn(lnet_ni_t *ni, struct ksock_route *route, struct ksock_peer *peer = NULL; struct ksock_peer *peer2; struct ksock_sched *sched; - ksock_hello_msg_t *hello; + struct ksock_hello_msg *hello; int cpt; struct ksock_tx *tx; struct ksock_tx *txtmp; @@ -1077,7 +1078,7 @@ ksocknal_create_conn(lnet_ni_t *ni, struct ksock_route *route, conn->ksnc_tx_carrier = NULL; atomic_set(&conn->ksnc_tx_nob, 0); - LIBCFS_ALLOC(hello, offsetof(ksock_hello_msg_t, + LIBCFS_ALLOC(hello, offsetof(struct ksock_hello_msg, kshm_ips[LNET_MAX_INTERFACES])); if (!hello) { rc = -ENOMEM; @@ -1341,7 +1342,7 @@ ksocknal_create_conn(lnet_ni_t *ni, struct ksock_route *route, rc = ksocknal_send_hello(ni, conn, peerid.nid, hello); } - LIBCFS_FREE(hello, offsetof(ksock_hello_msg_t, + LIBCFS_FREE(hello, offsetof(struct ksock_hello_msg, kshm_ips[LNET_MAX_INTERFACES])); /* @@ -1423,7 +1424,7 @@ ksocknal_create_conn(lnet_ni_t *ni, struct ksock_route *route, failed_1: if (hello) - LIBCFS_FREE(hello, offsetof(ksock_hello_msg_t, + LIBCFS_FREE(hello, offsetof(struct ksock_hello_msg, kshm_ips[LNET_MAX_INTERFACES])); LIBCFS_FREE(conn, sizeof(*conn)); @@ -1763,7 +1764,7 @@ ksocknal_close_conn_and_siblings(struct ksock_conn *conn, int why) } int -ksocknal_close_matching_conns(lnet_process_id_t id, __u32 ipaddr) +ksocknal_close_matching_conns(struct lnet_process_id id, __u32 ipaddr) { struct ksock_peer *peer; struct list_head *ptmp; @@ -1810,13 +1811,13 @@ ksocknal_close_matching_conns(lnet_process_id_t id, __u32 ipaddr) } void -ksocknal_notify(lnet_ni_t *ni, lnet_nid_t gw_nid, int alive) +ksocknal_notify(struct lnet_ni *ni, lnet_nid_t gw_nid, int alive) { /* * The router is telling me she's been notified of a change in * gateway state.... */ - lnet_process_id_t id = {0}; + struct lnet_process_id id = {0}; id.nid = gw_nid; id.pid = LNET_PID_ANY; @@ -1837,14 +1838,14 @@ ksocknal_notify(lnet_ni_t *ni, lnet_nid_t gw_nid, int alive) } void -ksocknal_query(lnet_ni_t *ni, lnet_nid_t nid, unsigned long *when) +ksocknal_query(struct lnet_ni *ni, lnet_nid_t nid, unsigned long *when) { int connect = 1; unsigned long last_alive = 0; unsigned long now = cfs_time_current(); struct ksock_peer *peer = NULL; rwlock_t *glock = &ksocknal_data.ksnd_global_lock; - lnet_process_id_t id = { + struct lnet_process_id id = { .nid = nid, .pid = LNET_PID_LUSTRE, }; @@ -1932,7 +1933,7 @@ ksocknal_push_peer(struct ksock_peer *peer) } } -static int ksocknal_push(lnet_ni_t *ni, lnet_process_id_t id) +static int ksocknal_push(struct lnet_ni *ni, struct lnet_process_id id) { struct list_head *start; struct list_head *end; @@ -1982,7 +1983,7 @@ static int ksocknal_push(lnet_ni_t *ni, lnet_process_id_t id) } static int -ksocknal_add_interface(lnet_ni_t *ni, __u32 ipaddress, __u32 netmask) +ksocknal_add_interface(struct lnet_ni *ni, __u32 ipaddress, __u32 netmask) { struct ksock_net *net = ni->ni_data; struct ksock_interface *iface; @@ -2086,7 +2087,7 @@ ksocknal_peer_del_interface_locked(struct ksock_peer *peer, __u32 ipaddr) } static int -ksocknal_del_interface(lnet_ni_t *ni, __u32 ipaddress) +ksocknal_del_interface(struct lnet_ni *ni, __u32 ipaddress) { struct ksock_net *net = ni->ni_data; int rc = -ENOENT; @@ -2132,9 +2133,9 @@ ksocknal_del_interface(lnet_ni_t *ni, __u32 ipaddress) } int -ksocknal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg) +ksocknal_ctl(struct lnet_ni *ni, unsigned int cmd, void *arg) { - lnet_process_id_t id = {0}; + struct lnet_process_id id = {0}; struct libcfs_ioctl_data *data = arg; int rc; @@ -2534,7 +2535,7 @@ ksocknal_base_startup(void) } static void -ksocknal_debug_peerhash(lnet_ni_t *ni) +ksocknal_debug_peerhash(struct lnet_ni *ni) { struct ksock_peer *peer = NULL; struct list_head *tmp; @@ -2587,11 +2588,11 @@ ksocknal_debug_peerhash(lnet_ni_t *ni) } void -ksocknal_shutdown(lnet_ni_t *ni) +ksocknal_shutdown(struct lnet_ni *ni) { struct ksock_net *net = ni->ni_data; int i; - lnet_process_id_t anyid = {0}; + struct lnet_process_id anyid = {0}; anyid.nid = LNET_NID_ANY; anyid.pid = LNET_PID_ANY; @@ -2810,7 +2811,7 @@ ksocknal_net_start_threads(struct ksock_net *net, __u32 *cpts, int ncpts) } int -ksocknal_startup(lnet_ni_t *ni) +ksocknal_startup(struct lnet_ni *ni) { struct ksock_net *net; int rc; diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h index 9e86563..5540de6 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h @@ -256,11 +256,11 @@ struct ksock_nal_data { /* * A packet just assembled for transmission is represented by 1 or more * struct iovec fragments (the first frag contains the portals header), - * followed by 0 or more lnet_kiov_t fragments. + * followed by 0 or more struct bio_vec fragments. * * On the receive side, initially 1 struct iovec fragment is posted for * receive (the header). Once the header has been received, the payload is - * received into either struct iovec or lnet_kiov_t fragments, depending on + * received into either struct iovec or struct bio_vec fragments, depending on * what the header matched or whether the message needs forwarding. */ struct ksock_conn; /* forward ref */ @@ -282,17 +282,17 @@ struct ksock_tx { /* transmit packet */ unsigned short tx_zc_capable:1; /* payload is large enough for ZC */ unsigned short tx_zc_checked:1; /* Have I checked if I should ZC? */ unsigned short tx_nonblk:1; /* it's a non-blocking ACK */ - lnet_kiov_t *tx_kiov; /* packet page frags */ + struct bio_vec *tx_kiov; /* packet page frags */ struct ksock_conn *tx_conn; /* owning conn */ - lnet_msg_t *tx_lnetmsg; /* lnet message for lnet_finalize() + struct lnet_msg *tx_lnetmsg; /* lnet message for lnet_finalize() */ unsigned long tx_deadline; /* when (in jiffies) tx times out */ - ksock_msg_t tx_msg; /* socklnd message buffer */ + struct ksock_msg tx_msg; /* socklnd message buffer */ int tx_desc_size; /* size of this descriptor */ union { struct { struct kvec iov; /* virt hdr */ - lnet_kiov_t kiov[0]; /* paged payload */ + struct bio_vec kiov[0]; /* paged payload */ } paged; struct { struct kvec iov[1]; /* virt hdr + payload */ @@ -310,7 +310,7 @@ struct ksock_tx { /* transmit packet */ */ union ksock_rxiovspace { struct kvec iov[LNET_MAX_IOV]; - lnet_kiov_t kiov[LNET_MAX_IOV]; + struct bio_vec kiov[LNET_MAX_IOV]; }; #define SOCKNAL_RX_KSM_HEADER 1 /* reading ksock message header */ @@ -362,14 +362,14 @@ struct ksock_conn { int ksnc_rx_niov; /* # iovec frags */ struct kvec *ksnc_rx_iov; /* the iovec frags */ int ksnc_rx_nkiov; /* # page frags */ - lnet_kiov_t *ksnc_rx_kiov; /* the page frags */ + struct bio_vec *ksnc_rx_kiov; /* the page frags */ union ksock_rxiovspace ksnc_rx_iov_space; /* space for frag descriptors */ __u32 ksnc_rx_csum; /* partial checksum for incoming * data */ void *ksnc_cookie; /* rx lnet_finalize passthru arg */ - ksock_msg_t ksnc_msg; /* incoming message buffer: + struct ksock_msg ksnc_msg; /* incoming message buffer: * V2.x message takes the * whole struct * V1.x message is a bare @@ -428,7 +428,7 @@ struct ksock_peer { unsigned long ksnp_last_alive; /* when (in jiffies) I was last * alive */ - lnet_process_id_t ksnp_id; /* who's on the other end(s) */ + struct lnet_process_id ksnp_id; /* who's on the other end(s) */ atomic_t ksnp_refcount; /* # users */ int ksnp_sharecount; /* lconf usage counter */ int ksnp_closing; /* being closed */ @@ -447,7 +447,7 @@ struct ksock_peer { * ACK */ unsigned long ksnp_send_keepalive; /* time to send keepalive */ - lnet_ni_t *ksnp_ni; /* which network */ + struct lnet_ni *ksnp_ni; /* which network */ int ksnp_n_passive_ips; /* # of... */ /* preferred local interfaces */ @@ -456,7 +456,7 @@ struct ksock_peer { struct ksock_connreq { struct list_head ksncr_list; /* stash on ksnd_connd_connreqs */ - lnet_ni_t *ksncr_ni; /* chosen NI */ + struct lnet_ni *ksncr_ni; /* chosen NI */ struct socket *ksncr_sock; /* accepted socket */ }; @@ -474,16 +474,16 @@ struct ksock_proto { int pro_version; /* handshake function */ - int (*pro_send_hello)(struct ksock_conn *, ksock_hello_msg_t *); + int (*pro_send_hello)(struct ksock_conn *, struct ksock_hello_msg *); /* handshake function */ - int (*pro_recv_hello)(struct ksock_conn *, ksock_hello_msg_t *, int); + int (*pro_recv_hello)(struct ksock_conn *, struct ksock_hello_msg *, int); /* message pack */ void (*pro_pack)(struct ksock_tx *); /* message unpack */ - void (*pro_unpack)(ksock_msg_t *); + void (*pro_unpack)(struct ksock_msg *); /* queue tx on the connection */ struct ksock_tx *(*pro_queue_tx_msg)(struct ksock_conn *, struct ksock_tx *); @@ -603,7 +603,7 @@ ksocknal_tx_addref(struct ksock_tx *tx) } void ksocknal_tx_prep(struct ksock_conn *, struct ksock_tx *tx); -void ksocknal_tx_done(lnet_ni_t *ni, struct ksock_tx *tx); +void ksocknal_tx_done(struct lnet_ni *ni, struct ksock_tx *tx); static inline void ksocknal_tx_decref(struct ksock_tx *tx) @@ -647,19 +647,22 @@ ksocknal_peer_decref(struct ksock_peer *peer) ksocknal_destroy_peer(peer); } -int ksocknal_startup(lnet_ni_t *ni); -void ksocknal_shutdown(lnet_ni_t *ni); -int ksocknal_ctl(lnet_ni_t *ni, unsigned int cmd, void *arg); -int ksocknal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg); -int ksocknal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, +int ksocknal_startup(struct lnet_ni *ni); +void ksocknal_shutdown(struct lnet_ni *ni); +int ksocknal_ctl(struct lnet_ni *ni, unsigned int cmd, void *arg); +int ksocknal_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg); +int ksocknal_recv(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg, int delayed, struct iov_iter *to, unsigned int rlen); -int ksocknal_accept(lnet_ni_t *ni, struct socket *sock); - -int ksocknal_add_peer(lnet_ni_t *ni, lnet_process_id_t id, __u32 ip, int port); -struct ksock_peer *ksocknal_find_peer_locked(lnet_ni_t *ni, lnet_process_id_t id); -struct ksock_peer *ksocknal_find_peer(lnet_ni_t *ni, lnet_process_id_t id); +int ksocknal_accept(struct lnet_ni *ni, struct socket *sock); + +int ksocknal_add_peer(struct lnet_ni *ni, struct lnet_process_id id, __u32 ip, + int port); +struct ksock_peer *ksocknal_find_peer_locked(struct lnet_ni *ni, + struct lnet_process_id id); +struct ksock_peer *ksocknal_find_peer(struct lnet_ni *ni, + struct lnet_process_id id); void ksocknal_peer_failed(struct ksock_peer *peer); -int ksocknal_create_conn(lnet_ni_t *ni, struct ksock_route *route, +int ksocknal_create_conn(struct lnet_ni *ni, struct ksock_route *route, struct socket *sock, int type); void ksocknal_close_conn_locked(struct ksock_conn *conn, int why); void ksocknal_terminate_conn(struct ksock_conn *conn); @@ -667,19 +670,19 @@ void ksocknal_destroy_conn(struct ksock_conn *conn); int ksocknal_close_peer_conns_locked(struct ksock_peer *peer, __u32 ipaddr, int why); int ksocknal_close_conn_and_siblings(struct ksock_conn *conn, int why); -int ksocknal_close_matching_conns(lnet_process_id_t id, __u32 ipaddr); +int ksocknal_close_matching_conns(struct lnet_process_id id, __u32 ipaddr); struct ksock_conn *ksocknal_find_conn_locked(struct ksock_peer *peer, struct ksock_tx *tx, int nonblk); -int ksocknal_launch_packet(lnet_ni_t *ni, struct ksock_tx *tx, - lnet_process_id_t id); +int ksocknal_launch_packet(struct lnet_ni *ni, struct ksock_tx *tx, + struct lnet_process_id id); struct ksock_tx *ksocknal_alloc_tx(int type, int size); void ksocknal_free_tx(struct ksock_tx *tx); struct ksock_tx *ksocknal_alloc_tx_noop(__u64 cookie, int nonblk); void ksocknal_next_tx_carrier(struct ksock_conn *conn); void ksocknal_queue_tx_locked(struct ksock_tx *tx, struct ksock_conn *conn); -void ksocknal_txlist_done(lnet_ni_t *ni, struct list_head *txlist, int error); -void ksocknal_notify(lnet_ni_t *ni, lnet_nid_t gw_nid, int alive); +void ksocknal_txlist_done(struct lnet_ni *ni, struct list_head *txlist, int error); +void ksocknal_notify(struct lnet_ni *ni, lnet_nid_t gw_nid, int alive); void ksocknal_query(struct lnet_ni *ni, lnet_nid_t nid, unsigned long *when); int ksocknal_thread_start(int (*fn)(void *arg), void *arg, char *name); void ksocknal_thread_fini(void); @@ -690,10 +693,11 @@ int ksocknal_new_packet(struct ksock_conn *conn, int skip); int ksocknal_scheduler(void *arg); int ksocknal_connd(void *arg); int ksocknal_reaper(void *arg); -int ksocknal_send_hello(lnet_ni_t *ni, struct ksock_conn *conn, - lnet_nid_t peer_nid, ksock_hello_msg_t *hello); -int ksocknal_recv_hello(lnet_ni_t *ni, struct ksock_conn *conn, - ksock_hello_msg_t *hello, lnet_process_id_t *id, +int ksocknal_send_hello(struct lnet_ni *ni, struct ksock_conn *conn, + lnet_nid_t peer_nid, struct ksock_hello_msg *hello); +int ksocknal_recv_hello(struct lnet_ni *ni, struct ksock_conn *conn, + struct ksock_hello_msg *hello, + struct lnet_process_id *id, __u64 *incarnation); void ksocknal_read_callback(struct ksock_conn *conn); void ksocknal_write_callback(struct ksock_conn *conn); diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c index 4c9f927..3ed3b08 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c @@ -145,7 +145,7 @@ ksocknal_send_iov(struct ksock_conn *conn, struct ksock_tx *tx) static int ksocknal_send_kiov(struct ksock_conn *conn, struct ksock_tx *tx) { - lnet_kiov_t *kiov = tx->tx_kiov; + struct bio_vec *kiov = tx->tx_kiov; int nob; int rc; @@ -298,7 +298,7 @@ ksocknal_recv_iov(struct ksock_conn *conn) static int ksocknal_recv_kiov(struct ksock_conn *conn) { - lnet_kiov_t *kiov = conn->ksnc_rx_kiov; + struct bio_vec *kiov = conn->ksnc_rx_kiov; int nob; int rc; @@ -393,9 +393,9 @@ ksocknal_receive(struct ksock_conn *conn) } void -ksocknal_tx_done(lnet_ni_t *ni, struct ksock_tx *tx) +ksocknal_tx_done(struct lnet_ni *ni, struct ksock_tx *tx) { - lnet_msg_t *lnetmsg = tx->tx_lnetmsg; + struct lnet_msg *lnetmsg = tx->tx_lnetmsg; int rc = (!tx->tx_resid && !tx->tx_zc_aborted) ? 0 : -EIO; LASSERT(ni || tx->tx_conn); @@ -412,7 +412,7 @@ ksocknal_tx_done(lnet_ni_t *ni, struct ksock_tx *tx) } void -ksocknal_txlist_done(lnet_ni_t *ni, struct list_head *txlist, int error) +ksocknal_txlist_done(struct lnet_ni *ni, struct list_head *txlist, int error) { struct ksock_tx *tx; @@ -695,7 +695,7 @@ void ksocknal_queue_tx_locked(struct ksock_tx *tx, struct ksock_conn *conn) { struct ksock_sched *sched = conn->ksnc_scheduler; - ksock_msg_t *msg = &tx->tx_msg; + struct ksock_msg *msg = &tx->tx_msg; struct ksock_tx *ztx = NULL; int bufnob = 0; @@ -845,7 +845,8 @@ ksocknal_find_connecting_route_locked(struct ksock_peer *peer) } int -ksocknal_launch_packet(lnet_ni_t *ni, struct ksock_tx *tx, lnet_process_id_t id) +ksocknal_launch_packet(struct lnet_ni *ni, struct ksock_tx *tx, + struct lnet_process_id id) { struct ksock_peer *peer; struct ksock_conn *conn; @@ -938,14 +939,14 @@ ksocknal_launch_packet(lnet_ni_t *ni, struct ksock_tx *tx, lnet_process_id_t id) } int -ksocknal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) +ksocknal_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg) { int mpflag = 1; int type = lntmsg->msg_type; - lnet_process_id_t target = lntmsg->msg_target; + struct lnet_process_id target = lntmsg->msg_target; unsigned int payload_niov = lntmsg->msg_niov; struct kvec *payload_iov = lntmsg->msg_iov; - lnet_kiov_t *payload_kiov = lntmsg->msg_kiov; + struct bio_vec *payload_kiov = lntmsg->msg_kiov; unsigned int payload_offset = lntmsg->msg_offset; unsigned int payload_nob = lntmsg->msg_len; struct ksock_tx *tx; @@ -1072,9 +1073,9 @@ ksocknal_new_packet(struct ksock_conn *conn, int nob_to_skip) conn->ksnc_rx_iov = (struct kvec *)&conn->ksnc_rx_iov_space; conn->ksnc_rx_iov[0].iov_base = &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: @@ -1132,7 +1133,7 @@ static int ksocknal_process_receive(struct ksock_conn *conn) { struct lnet_hdr *lhdr; - lnet_process_id_t *id; + struct lnet_process_id *id; int rc; LASSERT(atomic_read(&conn->ksnc_conn_refcount) > 0); @@ -1232,12 +1233,12 @@ ksocknal_process_receive(struct ksock_conn *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 kvec *)&conn->ksnc_rx_iov_space; conn->ksnc_rx_iov[0].iov_base = &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; @@ -1333,8 +1334,8 @@ ksocknal_process_receive(struct ksock_conn *conn) } int -ksocknal_recv(lnet_ni_t *ni, void *private, lnet_msg_t *msg, int delayed, - struct iov_iter *to, unsigned int rlen) +ksocknal_recv(struct lnet_ni *ni, void *private, struct lnet_msg *msg, + int delayed, struct iov_iter *to, unsigned int rlen) { struct ksock_conn *conn = private; struct ksock_sched *sched = conn->ksnc_scheduler; @@ -1633,7 +1634,7 @@ void ksocknal_write_callback(struct ksock_conn *conn) } static struct ksock_proto * -ksocknal_parse_proto_version(ksock_hello_msg_t *hello) +ksocknal_parse_proto_version(struct ksock_hello_msg *hello) { __u32 version = 0; @@ -1664,7 +1665,7 @@ ksocknal_parse_proto_version(ksock_hello_msg_t *hello) struct lnet_magicversion *hmv = (struct lnet_magicversion *)hello; BUILD_BUG_ON(sizeof(struct lnet_magicversion) != - 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)) @@ -1675,8 +1676,8 @@ ksocknal_parse_proto_version(ksock_hello_msg_t *hello) } int -ksocknal_send_hello(lnet_ni_t *ni, struct ksock_conn *conn, - lnet_nid_t peer_nid, ksock_hello_msg_t *hello) +ksocknal_send_hello(struct lnet_ni *ni, struct ksock_conn *conn, + lnet_nid_t peer_nid, struct ksock_hello_msg *hello) { /* CAVEAT EMPTOR: this byte flips 'ipaddrs' */ struct ksock_net *net = (struct ksock_net *)ni->ni_data; @@ -1713,8 +1714,9 @@ ksocknal_invert_type(int type) } int -ksocknal_recv_hello(lnet_ni_t *ni, struct ksock_conn *conn, - ksock_hello_msg_t *hello, lnet_process_id_t *peerid, +ksocknal_recv_hello(struct lnet_ni *ni, struct ksock_conn *conn, + struct ksock_hello_msg *hello, + struct lnet_process_id *peerid, __u64 *incarnation) { /* Return < 0 fatal error @@ -1728,7 +1730,7 @@ ksocknal_recv_hello(lnet_ni_t *ni, struct ksock_conn *conn, int proto_match; int rc; struct ksock_proto *proto; - lnet_process_id_t recv_id; + struct lnet_process_id recv_id; /* socket type set on active connections - not set on passive */ LASSERT(!active == !(conn->ksnc_type != SOCKLND_CONN_NONE)); @@ -1904,14 +1906,14 @@ ksocknal_connect(struct ksock_route *route) if (retry_later) /* needs reschedule */ break; - if (wanted & (1 << SOCKLND_CONN_ANY)) { + if (wanted & BIT(SOCKLND_CONN_ANY)) { type = SOCKLND_CONN_ANY; - } else if (wanted & (1 << SOCKLND_CONN_CONTROL)) { + } else if (wanted & BIT(SOCKLND_CONN_CONTROL)) { type = SOCKLND_CONN_CONTROL; - } else if (wanted & (1 << SOCKLND_CONN_BULK_IN)) { + } else if (wanted & BIT(SOCKLND_CONN_BULK_IN)) { type = SOCKLND_CONN_BULK_IN; } else { - LASSERT(wanted & (1 << SOCKLND_CONN_BULK_OUT)); + LASSERT(wanted & BIT(SOCKLND_CONN_BULK_OUT)); type = SOCKLND_CONN_BULK_OUT; } diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib.c index 4bcab4b..8a036f4 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib.c @@ -99,7 +99,7 @@ int ksocknal_lib_send_kiov(struct ksock_conn *conn, struct ksock_tx *tx) { struct socket *sock = conn->ksnc_sock; - lnet_kiov_t *kiov = tx->tx_kiov; + struct bio_vec *kiov = tx->tx_kiov; int rc; int nob; @@ -215,7 +215,7 @@ int ksocknal_lib_recv_kiov(struct ksock_conn *conn) { unsigned int niov = conn->ksnc_rx_nkiov; - lnet_kiov_t *kiov = conn->ksnc_rx_kiov; + struct bio_vec *kiov = conn->ksnc_rx_kiov; struct msghdr msg = { .msg_flags = 0 }; diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_proto.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_proto.c index d367e74..84be9a5 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_proto.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_proto.c @@ -287,11 +287,11 @@ ksocknal_match_tx(struct ksock_conn *conn, struct ksock_tx *tx, int nonblk) if (!tx || !tx->tx_lnetmsg) { /* noop packet */ - nob = offsetof(ksock_msg_t, ksm_u); + nob = offsetof(struct ksock_msg, ksm_u); } else { nob = tx->tx_lnetmsg->msg_len + ((conn->ksnc_proto == &ksocknal_protocol_v1x) ? - sizeof(struct lnet_hdr) : sizeof(ksock_msg_t)); + sizeof(struct lnet_hdr) : sizeof(struct ksock_msg)); } /* default checking for typed connection */ @@ -325,9 +325,9 @@ ksocknal_match_tx_v3(struct ksock_conn *conn, struct ksock_tx *tx, int nonblk) int nob; if (!tx || !tx->tx_lnetmsg) - nob = offsetof(ksock_msg_t, ksm_u); + nob = offsetof(struct ksock_msg, ksm_u); else - nob = tx->tx_lnetmsg->msg_len + sizeof(ksock_msg_t); + nob = tx->tx_lnetmsg->msg_len + sizeof(struct ksock_msg); switch (conn->ksnc_type) { default: @@ -456,7 +456,7 @@ ksocknal_handle_zcack(struct ksock_conn *conn, __u64 cookie1, __u64 cookie2) } static int -ksocknal_send_hello_v1(struct ksock_conn *conn, ksock_hello_msg_t *hello) +ksocknal_send_hello_v1(struct ksock_conn *conn, struct ksock_hello_msg *hello) { struct socket *sock = conn->ksnc_sock; struct lnet_hdr *hdr; @@ -531,7 +531,7 @@ out: } static int -ksocknal_send_hello_v2(struct ksock_conn *conn, ksock_hello_msg_t *hello) +ksocknal_send_hello_v2(struct ksock_conn *conn, struct ksock_hello_msg *hello) { struct socket *sock = conn->ksnc_sock; int rc; @@ -549,7 +549,7 @@ ksocknal_send_hello_v2(struct ksock_conn *conn, ksock_hello_msg_t *hello) LNET_UNLOCK(); } - rc = lnet_sock_write(sock, hello, offsetof(ksock_hello_msg_t, kshm_ips), + rc = lnet_sock_write(sock, hello, offsetof(struct ksock_hello_msg, kshm_ips), lnet_acceptor_timeout()); if (rc) { CNETERR("Error %d sending HELLO hdr to %pI4h/%d\n", @@ -573,7 +573,7 @@ ksocknal_send_hello_v2(struct ksock_conn *conn, ksock_hello_msg_t *hello) } static int -ksocknal_recv_hello_v1(struct ksock_conn *conn, ksock_hello_msg_t *hello, +ksocknal_recv_hello_v1(struct ksock_conn *conn, struct ksock_hello_msg *hello, int timeout) { struct socket *sock = conn->ksnc_sock; @@ -649,7 +649,7 @@ out: } static int -ksocknal_recv_hello_v2(struct ksock_conn *conn, ksock_hello_msg_t *hello, +ksocknal_recv_hello_v2(struct ksock_conn *conn, struct ksock_hello_msg *hello, int timeout) { struct socket *sock = conn->ksnc_sock; @@ -662,8 +662,8 @@ ksocknal_recv_hello_v2(struct ksock_conn *conn, ksock_hello_msg_t *hello, conn->ksnc_flip = 1; rc = lnet_sock_read(sock, &hello->kshm_src_nid, - offsetof(ksock_hello_msg_t, kshm_ips) - - offsetof(ksock_hello_msg_t, kshm_src_nid), + offsetof(struct ksock_hello_msg, kshm_ips) - + offsetof(struct ksock_hello_msg, kshm_src_nid), timeout); if (rc) { CERROR("Error %d reading HELLO from %pI4h\n", @@ -738,15 +738,15 @@ ksocknal_pack_msg_v2(struct ksock_tx *tx) LASSERT(tx->tx_msg.ksm_type != KSOCK_MSG_NOOP); tx->tx_msg.ksm_u.lnetmsg.ksnm_hdr = tx->tx_lnetmsg->msg_hdr; - tx->tx_iov[0].iov_len = sizeof(ksock_msg_t); - tx->tx_nob = sizeof(ksock_msg_t) + tx->tx_lnetmsg->msg_len; - tx->tx_resid = sizeof(ksock_msg_t) + tx->tx_lnetmsg->msg_len; + tx->tx_iov[0].iov_len = sizeof(struct ksock_msg); + tx->tx_nob = sizeof(struct ksock_msg) + tx->tx_lnetmsg->msg_len; + tx->tx_resid = sizeof(struct ksock_msg) + tx->tx_lnetmsg->msg_len; } else { LASSERT(tx->tx_msg.ksm_type == KSOCK_MSG_NOOP); - tx->tx_iov[0].iov_len = offsetof(ksock_msg_t, ksm_u.lnetmsg.ksnm_hdr); - tx->tx_nob = offsetof(ksock_msg_t, ksm_u.lnetmsg.ksnm_hdr); - tx->tx_resid = offsetof(ksock_msg_t, ksm_u.lnetmsg.ksnm_hdr); + tx->tx_iov[0].iov_len = offsetof(struct ksock_msg, ksm_u.lnetmsg.ksnm_hdr); + tx->tx_nob = offsetof(struct ksock_msg, ksm_u.lnetmsg.ksnm_hdr); + tx->tx_resid = offsetof(struct ksock_msg, ksm_u.lnetmsg.ksnm_hdr); } /* * Don't checksum before start sending, because packet can be @@ -755,7 +755,7 @@ ksocknal_pack_msg_v2(struct ksock_tx *tx) } static void -ksocknal_unpack_msg_v1(ksock_msg_t *msg) +ksocknal_unpack_msg_v1(struct ksock_msg *msg) { msg->ksm_csum = 0; msg->ksm_type = KSOCK_MSG_LNET; @@ -764,7 +764,7 @@ ksocknal_unpack_msg_v1(ksock_msg_t *msg) } static void -ksocknal_unpack_msg_v2(ksock_msg_t *msg) +ksocknal_unpack_msg_v2(struct ksock_msg *msg) { return; /* Do nothing */ } |