aboutsummaryrefslogtreecommitdiff
path: root/net/sunrpc/xprtrdma/verbs.c
diff options
context:
space:
mode:
authorGravatar Chuck Lever <chuck.lever@oracle.com> 2016-06-29 13:54:16 -0400
committerGravatar Anna Schumaker <Anna.Schumaker@Netapp.com> 2016-07-11 15:50:43 -0400
commit9d6b0409788287b64d8401ffba2ce11a5a86a879 (patch)
treef89383b033863f6d3ea6b2666a8eb9c50c3927ec /net/sunrpc/xprtrdma/verbs.c
parentxprtrdma: Release orphaned MRs immediately (diff)
downloadlinux-9d6b0409788287b64d8401ffba2ce11a5a86a879.tar.gz
linux-9d6b0409788287b64d8401ffba2ce11a5a86a879.tar.bz2
linux-9d6b0409788287b64d8401ffba2ce11a5a86a879.zip
xprtrdma: Place registered MWs on a per-req list
Instead of placing registered MWs sparsely into the rl_segments array, place these MWs on a per-req list. ro_unmap_{sync,safe} can then simply pull those MWs off the list instead of walking through the array. This change significantly reduces the size of struct rpcrdma_req by removing nsegs and rl_mw from every array element. As an additional clean-up, chunk co-ordinates are returned in the "*mw" output argument so they are no longer needed in every array element. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Tested-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'net/sunrpc/xprtrdma/verbs.c')
-rw-r--r--net/sunrpc/xprtrdma/verbs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
index e8677eafb329..a74d79d473c8 100644
--- a/net/sunrpc/xprtrdma/verbs.c
+++ b/net/sunrpc/xprtrdma/verbs.c
@@ -847,6 +847,7 @@ rpcrdma_create_req(struct rpcrdma_xprt *r_xprt)
spin_unlock(&buffer->rb_reqslock);
req->rl_cqe.done = rpcrdma_wc_send;
req->rl_buffer = &r_xprt->rx_buf;
+ INIT_LIST_HEAD(&req->rl_registered);
return req;
}