xprtrdma: Remove BOUNCEBUFFERS memory registration mode
Clean up: This memory registration mode is slow and was never meant for use in production environments. Remove it to reduce implementation complexity. 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>
This commit is contained in:
parent
254f91e2fa
commit
03ff8821eb
|
@ -77,9 +77,6 @@ static const char transfertypes[][12] = {
|
||||||
* Prepare the passed-in xdr_buf into representation as RPC/RDMA chunk
|
* Prepare the passed-in xdr_buf into representation as RPC/RDMA chunk
|
||||||
* elements. Segments are then coalesced when registered, if possible
|
* elements. Segments are then coalesced when registered, if possible
|
||||||
* within the selected memreg mode.
|
* within the selected memreg mode.
|
||||||
*
|
|
||||||
* Note, this routine is never called if the connection's memory
|
|
||||||
* registration strategy is 0 (bounce buffers).
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -439,14 +436,6 @@ rpcrdma_marshal_req(struct rpc_rqst *rqst)
|
||||||
wtype = rpcrdma_noch;
|
wtype = rpcrdma_noch;
|
||||||
BUG_ON(rtype != rpcrdma_noch && wtype != rpcrdma_noch);
|
BUG_ON(rtype != rpcrdma_noch && wtype != rpcrdma_noch);
|
||||||
|
|
||||||
if (r_xprt->rx_ia.ri_memreg_strategy == RPCRDMA_BOUNCEBUFFERS &&
|
|
||||||
(rtype != rpcrdma_noch || wtype != rpcrdma_noch)) {
|
|
||||||
/* forced to "pure inline"? */
|
|
||||||
dprintk("RPC: %s: too much data (%d/%d) for inline\n",
|
|
||||||
__func__, rqst->rq_rcv_buf.len, rqst->rq_snd_buf.len);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
hdrlen = 28; /*sizeof *headerp;*/
|
hdrlen = 28; /*sizeof *headerp;*/
|
||||||
padlen = 0;
|
padlen = 0;
|
||||||
|
|
||||||
|
|
|
@ -503,18 +503,6 @@ xprt_rdma_allocate(struct rpc_task *task, size_t size)
|
||||||
* If the allocation or registration fails, the RPC framework
|
* If the allocation or registration fails, the RPC framework
|
||||||
* will (doggedly) retry.
|
* will (doggedly) retry.
|
||||||
*/
|
*/
|
||||||
if (rpcx_to_rdmax(xprt)->rx_ia.ri_memreg_strategy ==
|
|
||||||
RPCRDMA_BOUNCEBUFFERS) {
|
|
||||||
/* forced to "pure inline" */
|
|
||||||
dprintk("RPC: %s: too much data (%zd) for inline "
|
|
||||||
"(r/w max %d/%d)\n", __func__, size,
|
|
||||||
rpcx_to_rdmad(xprt).inline_rsize,
|
|
||||||
rpcx_to_rdmad(xprt).inline_wsize);
|
|
||||||
size = req->rl_size;
|
|
||||||
rpc_exit(task, -EIO); /* fail the operation */
|
|
||||||
rpcx_to_rdmax(xprt)->rx_stats.failed_marshal_count++;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
if (task->tk_flags & RPC_TASK_SWAPPER)
|
if (task->tk_flags & RPC_TASK_SWAPPER)
|
||||||
nreq = kmalloc(sizeof *req + size, GFP_ATOMIC);
|
nreq = kmalloc(sizeof *req + size, GFP_ATOMIC);
|
||||||
else
|
else
|
||||||
|
@ -543,7 +531,6 @@ xprt_rdma_allocate(struct rpc_task *task, size_t size)
|
||||||
req = nreq;
|
req = nreq;
|
||||||
}
|
}
|
||||||
dprintk("RPC: %s: size %zd, request 0x%p\n", __func__, size, req);
|
dprintk("RPC: %s: size %zd, request 0x%p\n", __func__, size, req);
|
||||||
out:
|
|
||||||
req->rl_connect_cookie = 0; /* our reserved value */
|
req->rl_connect_cookie = 0; /* our reserved value */
|
||||||
return req->rl_xdr_buf;
|
return req->rl_xdr_buf;
|
||||||
|
|
||||||
|
|
|
@ -557,7 +557,6 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
|
||||||
* adapter.
|
* adapter.
|
||||||
*/
|
*/
|
||||||
switch (memreg) {
|
switch (memreg) {
|
||||||
case RPCRDMA_BOUNCEBUFFERS:
|
|
||||||
case RPCRDMA_REGISTER:
|
case RPCRDMA_REGISTER:
|
||||||
case RPCRDMA_FRMR:
|
case RPCRDMA_FRMR:
|
||||||
break;
|
break;
|
||||||
|
@ -778,9 +777,7 @@ rpcrdma_ep_create(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia,
|
||||||
|
|
||||||
/* Client offers RDMA Read but does not initiate */
|
/* Client offers RDMA Read but does not initiate */
|
||||||
ep->rep_remote_cma.initiator_depth = 0;
|
ep->rep_remote_cma.initiator_depth = 0;
|
||||||
if (ia->ri_memreg_strategy == RPCRDMA_BOUNCEBUFFERS)
|
if (devattr.max_qp_rd_atom > 32) /* arbitrary but <= 255 */
|
||||||
ep->rep_remote_cma.responder_resources = 0;
|
|
||||||
else if (devattr.max_qp_rd_atom > 32) /* arbitrary but <= 255 */
|
|
||||||
ep->rep_remote_cma.responder_resources = 32;
|
ep->rep_remote_cma.responder_resources = 32;
|
||||||
else
|
else
|
||||||
ep->rep_remote_cma.responder_resources = devattr.max_qp_rd_atom;
|
ep->rep_remote_cma.responder_resources = devattr.max_qp_rd_atom;
|
||||||
|
|
Loading…
Reference in a new issue