xprtrdma: Clean up rpcrdma_marshal_req() synopsis
Clean up: The caller already has rpcrdma_xprt, so pass that directly instead. And provide a documenting comment for this critical function. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
c1bcb68e39
commit
09e60641fc
@ -651,18 +651,27 @@ rpcrdma_unmap_sges(struct rpcrdma_ia *ia, struct rpcrdma_req *req)
|
|||||||
req->rl_mapped_sges = 0;
|
req->rl_mapped_sges = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Marshal a request: the primary job of this routine is to choose
|
* rpcrdma_marshal_req - Marshal and send one RPC request
|
||||||
* the transfer modes. See comments below.
|
* @r_xprt: controlling transport
|
||||||
|
* @rqst: RPC request to be marshaled
|
||||||
*
|
*
|
||||||
* Returns zero on success, otherwise a negative errno.
|
* For the RPC in "rqst", this function:
|
||||||
|
* - Chooses the transfer mode (eg., RDMA_MSG or RDMA_NOMSG)
|
||||||
|
* - Registers Read, Write, and Reply chunks
|
||||||
|
* - Constructs the transport header
|
||||||
|
* - Posts a Send WR to send the transport header and request
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* %0 if the RPC was sent successfully,
|
||||||
|
* %-ENOTCONN if the connection was lost,
|
||||||
|
* %-EAGAIN if not enough pages are available for on-demand reply buffer,
|
||||||
|
* %-ENOBUFS if no MRs are available to register chunks,
|
||||||
|
* %-EIO if a permanent problem occurred while marshaling.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
rpcrdma_marshal_req(struct rpc_rqst *rqst)
|
rpcrdma_marshal_req(struct rpcrdma_xprt *r_xprt, struct rpc_rqst *rqst)
|
||||||
{
|
{
|
||||||
struct rpc_xprt *xprt = rqst->rq_xprt;
|
|
||||||
struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
|
|
||||||
struct rpcrdma_req *req = rpcr_to_rdmar(rqst);
|
struct rpcrdma_req *req = rpcr_to_rdmar(rqst);
|
||||||
enum rpcrdma_chunktype rtype, wtype;
|
enum rpcrdma_chunktype rtype, wtype;
|
||||||
struct rpcrdma_msg *headerp;
|
struct rpcrdma_msg *headerp;
|
||||||
|
@ -730,7 +730,7 @@ xprt_rdma_send_request(struct rpc_task *task)
|
|||||||
if (unlikely(!list_empty(&req->rl_registered)))
|
if (unlikely(!list_empty(&req->rl_registered)))
|
||||||
r_xprt->rx_ia.ri_ops->ro_unmap_safe(r_xprt, req, false);
|
r_xprt->rx_ia.ri_ops->ro_unmap_safe(r_xprt, req, false);
|
||||||
|
|
||||||
rc = rpcrdma_marshal_req(rqst);
|
rc = rpcrdma_marshal_req(r_xprt, rqst);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
goto failed_marshal;
|
goto failed_marshal;
|
||||||
|
|
||||||
|
@ -637,7 +637,7 @@ enum rpcrdma_chunktype {
|
|||||||
bool rpcrdma_prepare_send_sges(struct rpcrdma_ia *, struct rpcrdma_req *,
|
bool rpcrdma_prepare_send_sges(struct rpcrdma_ia *, struct rpcrdma_req *,
|
||||||
u32, struct xdr_buf *, enum rpcrdma_chunktype);
|
u32, struct xdr_buf *, enum rpcrdma_chunktype);
|
||||||
void rpcrdma_unmap_sges(struct rpcrdma_ia *, struct rpcrdma_req *);
|
void rpcrdma_unmap_sges(struct rpcrdma_ia *, struct rpcrdma_req *);
|
||||||
int rpcrdma_marshal_req(struct rpc_rqst *);
|
int rpcrdma_marshal_req(struct rpcrdma_xprt *r_xprt, struct rpc_rqst *rqst);
|
||||||
void rpcrdma_set_max_header_sizes(struct rpcrdma_xprt *);
|
void rpcrdma_set_max_header_sizes(struct rpcrdma_xprt *);
|
||||||
void rpcrdma_reply_handler(struct work_struct *work);
|
void rpcrdma_reply_handler(struct work_struct *work);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user