linux/net/sunrpc/xprtrdma
Chuck Lever f13193f50b svcrdma: Introduce local rdma_rw API helpers
The plan is to replace the local bespoke code that constructs and
posts RDMA Read and Write Work Requests with calls to the rdma_rw
API. This shares code with other RDMA-enabled ULPs that manages the
gory details of buffer registration and posting Work Requests.

Some design notes:

 o The structure of RPC-over-RDMA transport headers is flexible,
   allowing multiple segments per Reply with arbitrary alignment,
   each with a unique R_key. Write and Send WRs continue to be
   built and posted in separate code paths. However, one whole
   chunk (with one or more RDMA segments apiece) gets exactly
   one ib_post_send and one work completion.

 o svc_xprt reference counting is modified, since a chain of
   rdma_rw_ctx structs generates one completion, no matter how
   many Write WRs are posted.

 o The current code builds the transport header as it is construct-
   ing Write WRs. I've replaced that with marshaling of transport
   header data items in a separate step. This is because the exact
   structure of client-provided segments may not align with the
   components of the server's reply xdr_buf, or the pages in the
   page list. Thus parts of each client-provided segment may be
   written at different points in the send path.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2017-04-25 17:25:55 -04:00
..
backchannel.c xprtrdma: Cap size of callback buffer resources 2016-11-29 16:45:44 -05:00
fmr_ops.c xprtrdma: Refactor management of mw_list field 2017-02-10 14:02:37 -05:00
frwr_ops.c xprtrdma: Refactor management of mw_list field 2017-02-10 14:02:37 -05:00
Makefile svcrdma: Introduce local rdma_rw API helpers 2017-04-25 17:25:55 -04:00
module.c rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
rpc_rdma.c xprtrdma: Refactor management of mw_list field 2017-02-10 14:02:37 -05:00
svc_rdma_backchannel.c svcrdma: Add svc_rdma_map_reply_hdr() 2017-04-25 17:25:54 -04:00
svc_rdma_marshal.c svcrdma: Clean up RPC-over-RDMA Call header decoder 2017-02-08 14:41:57 -05:00
svc_rdma_recvfrom.c svcrdma: Poll CQs in "workqueue" mode 2017-02-08 14:42:01 -05:00
svc_rdma_rw.c svcrdma: Introduce local rdma_rw API helpers 2017-04-25 17:25:55 -04:00
svc_rdma_sendto.c svcrdma: Clean up svc_rdma_get_inv_rkey() 2017-04-25 17:25:54 -04:00
svc_rdma_transport.c svcrdma: Introduce local rdma_rw API helpers 2017-04-25 17:25:55 -04:00
svc_rdma.c svcrdma: Eliminate RPCRDMA_SQ_DEPTH_MULT 2017-04-25 17:25:54 -04:00
transport.c xprtrdma: Properly recover FRWRs with in-flight FASTREG WRs 2017-02-10 14:02:36 -05:00
verbs.c xprtrdma: Squelch kbuild sparse complaint 2017-03-17 16:05:21 -04:00
xprt_rdma.h xprtrdma: Refactor management of mw_list field 2017-02-10 14:02:37 -05:00