]> asedeno.scripts.mit.edu Git - linux.git/commit
xprtrdma: Cache free MRs in each rpcrdma_req
authorChuck Lever <chuck.lever@oracle.com>
Mon, 19 Aug 2019 22:47:10 +0000 (18:47 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 21 Aug 2019 15:06:24 +0000 (11:06 -0400)
commit6dc6ec9e04c468d994bff6eb660f3146f94cbfd9
tree8fdb4a42ade89bbad59dcafd1f20c6e84ba4c914
parent805a1f620ba38c5f6de8b9697f35dcb38d8112b5
xprtrdma: Cache free MRs in each rpcrdma_req

Instead of a globally-contended MR free list, cache MRs in each
rpcrdma_req as they are released. This means acquiring and releasing
an MR will be lock-free in the common case, even outside the
transport send lock.

The original idea of per-rpcrdma_req MR free lists was suggested by
Shirley Ma <shirley.ma@oracle.com> several years ago. I just now
figured out how to make that idea work with on-demand MR allocation.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
include/trace/events/rpcrdma.h
net/sunrpc/xprtrdma/frwr_ops.c
net/sunrpc/xprtrdma/rpc_rdma.c
net/sunrpc/xprtrdma/verbs.c
net/sunrpc/xprtrdma/xprt_rdma.h