|
@@ -537,29 +537,6 @@ xprt_rdma_connect(struct rpc_xprt *xprt, struct rpc_task *task)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-/* Allocate a fixed-size buffer in which to construct and send the
|
|
|
|
- * RPC-over-RDMA header for this request.
|
|
|
|
- */
|
|
|
|
-static bool
|
|
|
|
-rpcrdma_get_rdmabuf(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
|
|
|
|
- gfp_t flags)
|
|
|
|
-{
|
|
|
|
- size_t size = RPCRDMA_HDRBUF_SIZE;
|
|
|
|
- struct rpcrdma_regbuf *rb;
|
|
|
|
-
|
|
|
|
- if (req->rl_rdmabuf)
|
|
|
|
- return true;
|
|
|
|
-
|
|
|
|
- rb = rpcrdma_alloc_regbuf(size, DMA_TO_DEVICE, flags);
|
|
|
|
- if (IS_ERR(rb))
|
|
|
|
- return false;
|
|
|
|
-
|
|
|
|
- r_xprt->rx_stats.hardway_register_count += size;
|
|
|
|
- req->rl_rdmabuf = rb;
|
|
|
|
- xdr_buf_init(&req->rl_hdrbuf, rb->rg_base, rdmab_length(rb));
|
|
|
|
- return true;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static bool
|
|
static bool
|
|
rpcrdma_get_sendbuf(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
|
|
rpcrdma_get_sendbuf(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
|
|
size_t size, gfp_t flags)
|
|
size_t size, gfp_t flags)
|
|
@@ -641,8 +618,6 @@ xprt_rdma_allocate(struct rpc_task *task)
|
|
if (RPC_IS_SWAPPER(task))
|
|
if (RPC_IS_SWAPPER(task))
|
|
flags = __GFP_MEMALLOC | GFP_NOWAIT | __GFP_NOWARN;
|
|
flags = __GFP_MEMALLOC | GFP_NOWAIT | __GFP_NOWARN;
|
|
|
|
|
|
- if (!rpcrdma_get_rdmabuf(r_xprt, req, flags))
|
|
|
|
- goto out_fail;
|
|
|
|
if (!rpcrdma_get_sendbuf(r_xprt, req, rqst->rq_callsize, flags))
|
|
if (!rpcrdma_get_sendbuf(r_xprt, req, rqst->rq_callsize, flags))
|
|
goto out_fail;
|
|
goto out_fail;
|
|
if (!rpcrdma_get_recvbuf(r_xprt, req, rqst->rq_rcvsize, flags))
|
|
if (!rpcrdma_get_recvbuf(r_xprt, req, rqst->rq_rcvsize, flags))
|