xprtrdma: Move the Work Request union to struct rpcrdma_mr
authorChuck Lever <chuck.lever@oracle.com>
Mon, 19 Apr 2021 18:04:15 +0000 (14:04 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 26 Apr 2021 13:27:13 +0000 (09:27 -0400)
Clean up.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/xprtrdma/frwr_ops.c
net/sunrpc/xprtrdma/xprt_rdma.h

index 7d7a64d..bb2b9c6 100644 (file)
@@ -333,7 +333,7 @@ struct rpcrdma_mr_seg *frwr_map(struct rpcrdma_xprt *r_xprt,
        key = (u8)(ibmr->rkey & 0x000000FF);
        ib_update_fast_reg_key(ibmr, ++key);
 
-       reg_wr = &mr->frwr.fr_regwr;
+       reg_wr = &mr->mr_regwr;
        reg_wr->mr = ibmr;
        reg_wr->key = ibmr->rkey;
        reg_wr->access = writing ?
@@ -398,19 +398,15 @@ int frwr_send(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
        num_wrs = 1;
        post_wr = send_wr;
        list_for_each_entry(mr, &req->rl_registered, mr_list) {
-               struct rpcrdma_frwr *frwr;
-
                trace_xprtrdma_mr_fastreg(mr);
-               frwr = &mr->frwr;
 
                mr->mr_cqe.done = frwr_wc_fastreg;
-               frwr->fr_regwr.wr.next = post_wr;
-               frwr->fr_regwr.wr.wr_cqe = &mr->mr_cqe;
-               frwr->fr_regwr.wr.num_sge = 0;
-               frwr->fr_regwr.wr.opcode = IB_WR_REG_MR;
-               frwr->fr_regwr.wr.send_flags = 0;
-
-               post_wr = &frwr->fr_regwr.wr;
+               mr->mr_regwr.wr.next = post_wr;
+               mr->mr_regwr.wr.wr_cqe = &mr->mr_cqe;
+               mr->mr_regwr.wr.num_sge = 0;
+               mr->mr_regwr.wr.opcode = IB_WR_REG_MR;
+               mr->mr_regwr.wr.send_flags = 0;
+               post_wr = &mr->mr_regwr.wr;
                ++num_wrs;
        }
 
@@ -506,7 +502,6 @@ void frwr_unmap_sync(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
        struct ib_send_wr *first, **prev, *last;
        struct rpcrdma_ep *ep = r_xprt->rx_ep;
        const struct ib_send_wr *bad_wr;
-       struct rpcrdma_frwr *frwr;
        struct rpcrdma_mr *mr;
        int rc;
 
@@ -515,15 +510,13 @@ void frwr_unmap_sync(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
         * Chain the LOCAL_INV Work Requests and post them with
         * a single ib_post_send() call.
         */
-       frwr = NULL;
        prev = &first;
        while ((mr = rpcrdma_mr_pop(&req->rl_registered))) {
 
                trace_xprtrdma_mr_localinv(mr);
                r_xprt->rx_stats.local_inv_needed++;
 
-               frwr = &mr->frwr;
-               last = &frwr->fr_invwr;
+               last = &mr->mr_invwr;
                last->next = NULL;
                last->wr_cqe = &mr->mr_cqe;
                last->sg_list = NULL;
@@ -608,22 +601,19 @@ void frwr_unmap_async(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
 {
        struct ib_send_wr *first, *last, **prev;
        struct rpcrdma_ep *ep = r_xprt->rx_ep;
-       struct rpcrdma_frwr *frwr;
        struct rpcrdma_mr *mr;
        int rc;
 
        /* Chain the LOCAL_INV Work Requests and post them with
         * a single ib_post_send() call.
         */
-       frwr = NULL;
        prev = &first;
        while ((mr = rpcrdma_mr_pop(&req->rl_registered))) {
 
                trace_xprtrdma_mr_localinv(mr);
                r_xprt->rx_stats.local_inv_needed++;
 
-               frwr = &mr->frwr;
-               last = &frwr->fr_invwr;
+               last = &mr->mr_invwr;
                last->next = NULL;
                last->wr_cqe = &mr->mr_cqe;
                last->sg_list = NULL;
index 1374054..99ef83d 100644 (file)
@@ -231,10 +231,6 @@ struct rpcrdma_sendctx {
  */
 struct rpcrdma_frwr {
        struct ib_mr                    *fr_mr;
-       union {
-               struct ib_reg_wr        fr_regwr;
-               struct ib_send_wr       fr_invwr;
-       };
 };
 
 struct rpcrdma_req;
@@ -247,6 +243,10 @@ struct rpcrdma_mr {
        enum dma_data_direction mr_dir;
        struct ib_cqe           mr_cqe;
        struct completion       mr_linv_done;
+       union {
+               struct ib_reg_wr        mr_regwr;
+               struct ib_send_wr       mr_invwr;
+       };
        struct rpcrdma_frwr     frwr;
        struct rpcrdma_xprt     *mr_xprt;
        u32                     mr_handle;