Whamcloud - gitweb
LU-13004 gnilnd: discard struct kvec arg. 46/37846/9
authorMr NeilBrown <neilb@suse.de>
Wed, 4 Dec 2019 04:42:17 +0000 (15:42 +1100)
committerOleg Drokin <green@whamcloud.com>
Wed, 27 May 2020 05:04:33 +0000 (05:04 +0000)
The 'struct kvec *' are to kgnilnd_setup_rdma_buffer()
and kgnilnd_setup_immediate_buffer() is now always
NULL.  So we can remove the arg and code that handles
non-NULL values.
This means that kgnilnd_setup_virt_buffer() can
disappear completely.

Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Ib38494693fba521a6e3dc4e6dc0cbb33dea1595b
Reviewed-on: https://review.whamcloud.com/37846
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/klnds/gnilnd/gnilnd_cb.c

index fa104c6..2d5fe4d 100644 (file)
@@ -301,8 +301,8 @@ kgnilnd_alloc_tx (void)
 #define _kgnilnd_cksum(seed, ptr, nob)  csum_partial(ptr, nob, seed)
 
 /* we don't use offset as every one is passing a buffer reference that already
 #define _kgnilnd_cksum(seed, ptr, nob)  csum_partial(ptr, nob, seed)
 
 /* we don't use offset as every one is passing a buffer reference that already
- * includes the offset into the base address -
- *  see kgnilnd_setup_virt_buffer and kgnilnd_setup_immediate_buffer */
+ * includes the offset into the base address.
+ */
 static inline __u16
 kgnilnd_cksum(void *ptr, size_t nob)
 {
 static inline __u16
 kgnilnd_cksum(void *ptr, size_t nob)
 {
@@ -511,9 +511,9 @@ kgnilnd_nak_rdma(kgn_conn_t *conn, int rx_type, int error, __u64 cookie, lnet_ni
        kgnilnd_queue_tx(conn, tx);
 }
 
        kgnilnd_queue_tx(conn, tx);
 }
 
-int
+static int
 kgnilnd_setup_immediate_buffer(kgn_tx_t *tx, unsigned int niov,
 kgnilnd_setup_immediate_buffer(kgn_tx_t *tx, unsigned int niov,
-                              struct kvec *iov, struct bio_vec *kiov,
+                              struct bio_vec *kiov,
                               unsigned int offset, unsigned int nob)
 {
        kgn_msg_t       *msg = &tx->tx_msg;
                               unsigned int offset, unsigned int nob)
 {
        kgn_msg_t       *msg = &tx->tx_msg;
@@ -526,7 +526,7 @@ kgnilnd_setup_immediate_buffer(kgn_tx_t *tx, unsigned int niov,
 
        if (nob == 0) {
                tx->tx_buffer = NULL;
 
        if (nob == 0) {
                tx->tx_buffer = NULL;
-       } else if (kiov != NULL) {
+       } else {
 
                if ((niov > 0) && unlikely(niov > (nob/PAGE_SIZE))) {
                        niov = round_up(nob + offset + kiov->bv_offset,
 
                if ((niov > 0) && unlikely(niov > (nob/PAGE_SIZE))) {
                        niov = round_up(nob + offset + kiov->bv_offset,
@@ -534,8 +534,8 @@ kgnilnd_setup_immediate_buffer(kgn_tx_t *tx, unsigned int niov,
                }
 
                LASSERTF(niov > 0 && niov < GNILND_MAX_IMMEDIATE/PAGE_SIZE,
                }
 
                LASSERTF(niov > 0 && niov < GNILND_MAX_IMMEDIATE/PAGE_SIZE,
-                       "bad niov %d msg %p kiov %p iov %p offset %d nob%d\n",
-                       niov, msg, kiov, iov, offset, nob);
+                       "bad niov %d msg %p kiov %p offset %d nob%d\n",
+                       niov, msg, kiov, offset, nob);
 
                while (offset >= kiov->bv_len) {
                        offset -= kiov->bv_len;
 
                while (offset >= kiov->bv_len) {
                        offset -= kiov->bv_len;
@@ -591,29 +591,6 @@ kgnilnd_setup_immediate_buffer(kgn_tx_t *tx, unsigned int niov,
                tx->tx_buftype = GNILND_BUF_IMMEDIATE_KIOV;
                tx->tx_nob = nob;
 
                tx->tx_buftype = GNILND_BUF_IMMEDIATE_KIOV;
                tx->tx_nob = nob;
 
-       } else {
-               /* For now this is almost identical to kgnilnd_setup_virt_buffer, but we
-                * could "flatten" the payload into a single contiguous buffer ready
-                * for sending direct over an FMA if we ever needed to. */
-
-               LASSERT(niov > 0);
-
-               while (offset >= iov->iov_len) {
-                       offset -= iov->iov_len;
-                       niov--;
-                       iov++;
-                       LASSERT(niov > 0);
-               }
-
-               if (nob > iov->iov_len - offset) {
-                       CERROR("Can't handle multiple vaddr fragments\n");
-                       return -EMSGSIZE;
-               }
-
-               tx->tx_buffer = (void *)(((unsigned long)iov->iov_base) + offset);
-
-               tx->tx_buftype = GNILND_BUF_IMMEDIATE;
-               tx->tx_nob = nob;
        }
 
        /* checksum payload early - it shouldn't be changing after lnd_send */
        }
 
        /* checksum payload early - it shouldn't be changing after lnd_send */
@@ -634,34 +611,6 @@ kgnilnd_setup_immediate_buffer(kgn_tx_t *tx, unsigned int niov,
 }
 
 int
 }
 
 int
-kgnilnd_setup_virt_buffer(kgn_tx_t *tx,
-                         unsigned int niov, struct kvec *iov,
-                         unsigned int offset, unsigned int nob)
-
-{
-       LASSERT(nob > 0);
-       LASSERT(niov > 0);
-       LASSERT(tx->tx_buftype == GNILND_BUF_NONE);
-
-       while (offset >= iov->iov_len) {
-               offset -= iov->iov_len;
-               niov--;
-               iov++;
-               LASSERT(niov > 0);
-       }
-
-       if (nob > iov->iov_len - offset) {
-               CERROR("Can't handle multiple vaddr fragments\n");
-               return -EMSGSIZE;
-       }
-
-       tx->tx_buftype = GNILND_BUF_VIRT_UNMAPPED;
-       tx->tx_nob = nob;
-       tx->tx_buffer = (void *)(((unsigned long)iov->iov_base) + offset);
-       return 0;
-}
-
-int
 kgnilnd_setup_phys_buffer(kgn_tx_t *tx, int nkiov, struct bio_vec *kiov,
                          unsigned int offset, unsigned int nob)
 {
 kgnilnd_setup_phys_buffer(kgn_tx_t *tx, int nkiov, struct bio_vec *kiov,
                          unsigned int offset, unsigned int nob)
 {
@@ -776,21 +725,10 @@ error:
 
 static inline int
 kgnilnd_setup_rdma_buffer(kgn_tx_t *tx, unsigned int niov,
 
 static inline int
 kgnilnd_setup_rdma_buffer(kgn_tx_t *tx, unsigned int niov,
-                         struct kvec *iov, struct bio_vec *kiov,
+                         struct bio_vec *kiov,
                          unsigned int offset, unsigned int nob)
 {
                          unsigned int offset, unsigned int nob)
 {
-       int     rc;
-
-       LASSERTF((iov == NULL) != (kiov == NULL), "iov 0x%p, kiov 0x%p, tx 0x%p,"
-                                               " offset %d, nob %d, niov %d\n"
-                                               , iov, kiov, tx, offset, nob, niov);
-
-       if (kiov != NULL) {
-               rc = kgnilnd_setup_phys_buffer(tx, niov, kiov, offset, nob);
-       } else {
-               rc = kgnilnd_setup_virt_buffer(tx, niov, iov, offset, nob);
-       }
-       return rc;
+       return kgnilnd_setup_phys_buffer(tx, niov, kiov, offset, nob);
 }
 
 /* kgnilnd_parse_lnet_rdma()
 }
 
 /* kgnilnd_parse_lnet_rdma()
@@ -2180,7 +2118,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                        goto out;
                }
                rc = kgnilnd_setup_rdma_buffer(tx, lntmsg->msg_md->md_niov,
                        goto out;
                }
                rc = kgnilnd_setup_rdma_buffer(tx, lntmsg->msg_md->md_niov,
-                                              NULL, lntmsg->msg_md->md_kiov,
+                                              lntmsg->msg_md->md_kiov,
                                               0, lntmsg->msg_md->md_length);
                if (rc != 0) {
                        CERROR("unable to setup buffer: %d\n", rc);
                                               0, lntmsg->msg_md->md_length);
                if (rc != 0) {
                        CERROR("unable to setup buffer: %d\n", rc);
@@ -2224,7 +2162,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                        goto out;
                }
 
                        goto out;
                }
 
-               rc = kgnilnd_setup_rdma_buffer(tx, niov, NULL,
+               rc = kgnilnd_setup_rdma_buffer(tx, niov,
                                               kiov, offset, nob);
                if (rc != 0) {
                        kgnilnd_tx_done(tx, rc);
                                               kiov, offset, nob);
                if (rc != 0) {
                        kgnilnd_tx_done(tx, rc);
@@ -2307,7 +2245,7 @@ kgnilnd_setup_rdma(struct lnet_ni *ni, kgn_rx_t *rx, struct lnet_msg *lntmsg, in
        if (rc != 0)
                goto failed_1;
 
        if (rc != 0)
                goto failed_1;
 
-       rc = kgnilnd_setup_rdma_buffer(tx, niov, NULL, kiov, offset, nob);
+       rc = kgnilnd_setup_rdma_buffer(tx, niov, kiov, offset, nob);
        if (rc != 0)
                goto failed_1;
 
        if (rc != 0)
                goto failed_1;
 
@@ -2548,7 +2486,7 @@ kgnilnd_recv(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg,
                        GOTO(nak_put_req, rc);
                }
 
                        GOTO(nak_put_req, rc);
                }
 
-               rc = kgnilnd_setup_rdma_buffer(tx, niov, NULL,
+               rc = kgnilnd_setup_rdma_buffer(tx, niov,
                                               kiov, offset, mlen);
                if (rc != 0) {
                        GOTO(nak_put_req, rc);
                                               kiov, offset, mlen);
                if (rc != 0) {
                        GOTO(nak_put_req, rc);
@@ -2609,13 +2547,11 @@ nak_put_req:
                        if (rc != 0)
                                GOTO(nak_get_req_rev, rc);
 
                        if (rc != 0)
                                GOTO(nak_get_req_rev, rc);
 
-
-                       rc = kgnilnd_setup_rdma_buffer(tx, niov, NULL,
+                       rc = kgnilnd_setup_rdma_buffer(tx, niov,
                                                       kiov, offset, mlen);
                        if (rc != 0)
                                GOTO(nak_get_req_rev, rc);
 
                                                       kiov, offset, mlen);
                        if (rc != 0)
                                GOTO(nak_get_req_rev, rc);
 
-
                        tx->tx_msg.gnm_u.putack.gnpam_src_cookie =
                                rxmsg->gnm_u.putreq.gnprm_cookie;
                        tx->tx_msg.gnm_u.putack.gnpam_dst_cookie = tx->tx_id.txe_cookie;
                        tx->tx_msg.gnm_u.putack.gnpam_src_cookie =
                                rxmsg->gnm_u.putreq.gnprm_cookie;
                        tx->tx_msg.gnm_u.putack.gnpam_dst_cookie = tx->tx_id.txe_cookie;