Skip to content

Commit dc15c3d

Browse files
chuckleveramschuma-ntap
authored andcommitted
xprtrdma: Move the rpcrdma_sendctx::sc_wr field
Clean up: This field is not needed in the Send completion handler, so it can be moved to struct rpcrdma_req to reduce the size of struct rpcrdma_sendctx, and to reduce the amount of memory that is sloshed between the sending process and the Send completion process. Signed-off-by: Chuck Lever <[email protected]> Signed-off-by: Anna Schumaker <[email protected]>
1 parent b5cde6a commit dc15c3d

File tree

5 files changed

+11
-12
lines changed

5 files changed

+11
-12
lines changed

include/trace/events/rpcrdma.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -667,9 +667,8 @@ TRACE_EVENT(xprtrdma_post_send,
667667
__entry->client_id = rqst->rq_task->tk_client ?
668668
rqst->rq_task->tk_client->cl_clid : -1;
669669
__entry->req = req;
670-
__entry->num_sge = req->rl_sendctx->sc_wr.num_sge;
671-
__entry->signaled = req->rl_sendctx->sc_wr.send_flags &
672-
IB_SEND_SIGNALED;
670+
__entry->num_sge = req->rl_wr.num_sge;
671+
__entry->signaled = req->rl_wr.send_flags & IB_SEND_SIGNALED;
673672
__entry->status = status;
674673
),
675674

net/sunrpc/xprtrdma/frwr_ops.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ int frwr_send(struct rpcrdma_ia *ia, struct rpcrdma_req *req)
396396
struct ib_send_wr *post_wr;
397397
struct rpcrdma_mr *mr;
398398

399-
post_wr = &req->rl_sendctx->sc_wr;
399+
post_wr = &req->rl_wr;
400400
list_for_each_entry(mr, &req->rl_registered, mr_list) {
401401
struct rpcrdma_frwr *frwr;
402402

net/sunrpc/xprtrdma/rpc_rdma.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ static bool rpcrdma_prepare_hdr_sge(struct rpcrdma_xprt *r_xprt,
599599

600600
ib_dma_sync_single_for_device(rdmab_device(rb), sge->addr, sge->length,
601601
DMA_TO_DEVICE);
602-
sc->sc_wr.num_sge++;
602+
req->rl_wr.num_sge++;
603603
return true;
604604

605605
out_regbuf:
@@ -711,7 +711,7 @@ static bool rpcrdma_prepare_msg_sges(struct rpcrdma_xprt *r_xprt,
711711
}
712712

713713
out:
714-
sc->sc_wr.num_sge += sge_no;
714+
req->rl_wr.num_sge += sge_no;
715715
if (sc->sc_unmap_count)
716716
kref_get(&req->rl_kref);
717717
return true;
@@ -752,10 +752,13 @@ rpcrdma_prepare_send_sges(struct rpcrdma_xprt *r_xprt,
752752
req->rl_sendctx = rpcrdma_sendctx_get_locked(r_xprt);
753753
if (!req->rl_sendctx)
754754
goto err;
755-
req->rl_sendctx->sc_wr.num_sge = 0;
756755
req->rl_sendctx->sc_unmap_count = 0;
757756
req->rl_sendctx->sc_req = req;
758757
kref_init(&req->rl_kref);
758+
req->rl_wr.wr_cqe = &req->rl_sendctx->sc_cqe;
759+
req->rl_wr.sg_list = req->rl_sendctx->sc_sges;
760+
req->rl_wr.num_sge = 0;
761+
req->rl_wr.opcode = IB_WR_SEND;
759762

760763
ret = -EIO;
761764
if (!rpcrdma_prepare_hdr_sge(r_xprt, req, hdrlen))

net/sunrpc/xprtrdma/verbs.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -811,9 +811,6 @@ static struct rpcrdma_sendctx *rpcrdma_sendctx_create(struct rpcrdma_ia *ia)
811811
if (!sc)
812812
return NULL;
813813

814-
sc->sc_wr.wr_cqe = &sc->sc_cqe;
815-
sc->sc_wr.sg_list = sc->sc_sges;
816-
sc->sc_wr.opcode = IB_WR_SEND;
817814
sc->sc_cqe.done = rpcrdma_wc_send;
818815
return sc;
819816
}
@@ -1469,7 +1466,7 @@ rpcrdma_ep_post(struct rpcrdma_ia *ia,
14691466
struct rpcrdma_ep *ep,
14701467
struct rpcrdma_req *req)
14711468
{
1472-
struct ib_send_wr *send_wr = &req->rl_sendctx->sc_wr;
1469+
struct ib_send_wr *send_wr = &req->rl_wr;
14731470
int rc;
14741471

14751472
if (!ep->rep_send_count || kref_read(&req->rl_kref) > 1) {

net/sunrpc/xprtrdma/xprt_rdma.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ enum {
219219
*/
220220
struct rpcrdma_req;
221221
struct rpcrdma_sendctx {
222-
struct ib_send_wr sc_wr;
223222
struct ib_cqe sc_cqe;
224223
struct rpcrdma_req *sc_req;
225224
unsigned int sc_unmap_count;
@@ -314,6 +313,7 @@ struct rpcrdma_req {
314313
struct rpcrdma_rep *rl_reply;
315314
struct xdr_stream rl_stream;
316315
struct xdr_buf rl_hdrbuf;
316+
struct ib_send_wr rl_wr;
317317
struct rpcrdma_sendctx *rl_sendctx;
318318
struct rpcrdma_regbuf *rl_rdmabuf; /* xprt header */
319319
struct rpcrdma_regbuf *rl_sendbuf; /* rq_snd_buf */

0 commit comments

Comments
 (0)