staging: lustre: socklnd: simplify ksnc_rx_iov_space
authorNeilBrown <neilb@suse.com>
Tue, 20 Feb 2018 02:23:38 +0000 (13:23 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Feb 2018 14:06:36 +0000 (15:06 +0100)
ksnc_rx_iov_space is currently a union of two arrays,
one of 'struct kvec', the other of 'struct bio_vec'.

The 'struct bio_vec' option is never used.  The
array of kvec is used to read in a packet header, or
to read data that needs to be skipped so as to synchronize
with a packet boundary.
In each case the target memory location is a virtual address,
never a page, so 'struct bio_vec' is never needed.

When we read into a page, different code steps up a separate
array of 'struct bio_vec'.

So remove the bio_vec option, and remove the union ksock_rxiovspace..

Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h
drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c

index d50ebdf863fa9c0f23c53741736703cda5181338..570f54ed57b112a227d8f92498eb7b195d301f2b 100644 (file)
@@ -304,15 +304,6 @@ struct ksock_tx {                     /* transmit packet */
 
 /* network zero copy callback descriptor embedded in struct ksock_tx */
 
-/*
- * space for the rx frag descriptors; we either read a single contiguous
- * header, or up to LNET_MAX_IOV frags of payload of either type.
- */
-union ksock_rxiovspace {
-       struct kvec      iov[LNET_MAX_IOV];
-       struct bio_vec  kiov[LNET_MAX_IOV];
-};
-
 #define SOCKNAL_RX_KSM_HEADER   1 /* reading ksock message header */
 #define SOCKNAL_RX_LNET_HEADER  2 /* reading lnet message header */
 #define SOCKNAL_RX_PARSE        3 /* Calling lnet_parse() */
@@ -359,7 +350,7 @@ struct ksock_conn {
        __u8               ksnc_rx_state;     /* what is being read */
        int                ksnc_rx_nob_left;  /* # bytes to next hdr/body */
        struct iov_iter    ksnc_rx_to;          /* copy destination */
-       union ksock_rxiovspace ksnc_rx_iov_space; /* space for frag descriptors */
+       struct kvec        ksnc_rx_iov_space[LNET_MAX_IOV]; /* space for frag descriptors */
        __u32              ksnc_rx_csum;      /* partial checksum for incoming
                                               * data
                                               */
index 6ab002c006ab77d06f6f029c2b726ab385e1c563..036fecbcede8da91623ec4fd818da9db5c93728d 100644 (file)
@@ -986,7 +986,7 @@ int
 ksocknal_new_packet(struct ksock_conn *conn, int nob_to_skip)
 {
        static char ksocknal_slop_buffer[4096];
-       struct kvec *kvec = (struct kvec *)&conn->ksnc_rx_iov_space;
+       struct kvec *kvec = conn->ksnc_rx_iov_space;
 
        int nob;
        unsigned int niov;
@@ -1059,7 +1059,7 @@ ksocknal_new_packet(struct ksock_conn *conn, int nob_to_skip)
 static int
 ksocknal_process_receive(struct ksock_conn *conn)
 {
-       struct kvec *kvec = (struct kvec *)&conn->ksnc_rx_iov_space;
+       struct kvec *kvec = conn->ksnc_rx_iov_space;
        struct lnet_hdr *lhdr;
        struct lnet_process_id *id;
        int rc;