]> git.baikalelectronics.ru Git - kernel.git/commit
svcrdma: Add a "parsed chunk list" data structure
authorChuck Lever <chuck.lever@oracle.com>
Mon, 22 Jun 2020 14:15:41 +0000 (10:15 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 30 Nov 2020 18:00:22 +0000 (13:00 -0500)
commit366ad9b46988341e163f7704bc4fb47d86e4db5d
tree9222da84a51b34258996dafeb3a2774a96122a39
parentac7ad06713400e182d618ab751b403f8183c4a77
svcrdma: Add a "parsed chunk list" data structure

This simple data structure binds the location of each data payload
inside of an RPC message to the chunk that will be used to push it
to or pull it from the client.

There are several benefits to this small additional overhead:

 * It enables support for more than one chunk in incoming Read and
   Write lists.

 * It translates the version-specific on-the-wire format into a
   generic in-memory structure, enabling support for multiple
   versions of the RPC/RDMA transport protocol.

 * It enables the server to re-organize a chunk list if it needs to
   adjust where Read chunk data lands in server memory without
   altering the contents of the XDR-encoded Receive buffer.

Construction of these lists is done while sanity checking each
incoming RPC/RDMA header. Subsequent patches will make use of the
generated data structures.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
include/linux/sunrpc/svc_rdma.h
include/linux/sunrpc/svc_rdma_pcl.h [new file with mode: 0644]
include/trace/events/rpcrdma.h
net/sunrpc/xprtrdma/Makefile
net/sunrpc/xprtrdma/svc_rdma_pcl.c [new file with mode: 0644]
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c