mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
xprtrdma: Replace rpcrdma_rep::rr_buffer with rr_rxprt
Clean up: Instead of carrying a pointer to the buffer pool and the rpc_xprt, carry a pointer to the controlling rpcrdma_xprt. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Steve Wise <swise@opengridcomputing.com> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Tested-By: Devesh Sharma <devesh.sharma@avagotech.com> Reviewed-by: Doug Ledford <dledford@redhat.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
6d44698d54
commit
fed171b35c
@ -732,8 +732,8 @@ rpcrdma_reply_handler(struct rpcrdma_rep *rep)
|
|||||||
struct rpcrdma_msg *headerp;
|
struct rpcrdma_msg *headerp;
|
||||||
struct rpcrdma_req *req;
|
struct rpcrdma_req *req;
|
||||||
struct rpc_rqst *rqst;
|
struct rpc_rqst *rqst;
|
||||||
struct rpc_xprt *xprt = rep->rr_xprt;
|
struct rpcrdma_xprt *r_xprt = rep->rr_rxprt;
|
||||||
struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
|
struct rpc_xprt *xprt = &r_xprt->rx_xprt;
|
||||||
__be32 *iptr;
|
__be32 *iptr;
|
||||||
int rdmalen, status;
|
int rdmalen, status;
|
||||||
unsigned long cwnd;
|
unsigned long cwnd;
|
||||||
|
@ -617,12 +617,9 @@ xprt_rdma_send_request(struct rpc_task *task)
|
|||||||
|
|
||||||
if (req->rl_reply == NULL) /* e.g. reconnection */
|
if (req->rl_reply == NULL) /* e.g. reconnection */
|
||||||
rpcrdma_recv_buffer_get(req);
|
rpcrdma_recv_buffer_get(req);
|
||||||
|
/* rpcrdma_recv_buffer_get may have set rl_reply, so check again */
|
||||||
if (req->rl_reply) {
|
if (req->rl_reply)
|
||||||
req->rl_reply->rr_func = rpcrdma_reply_handler;
|
req->rl_reply->rr_func = rpcrdma_reply_handler;
|
||||||
/* this need only be done once, but... */
|
|
||||||
req->rl_reply->rr_xprt = xprt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Must suppress retransmit to maintain credits */
|
/* Must suppress retransmit to maintain credits */
|
||||||
if (req->rl_connect_cookie == xprt->connect_cookie)
|
if (req->rl_connect_cookie == xprt->connect_cookie)
|
||||||
|
@ -278,6 +278,7 @@ rpcrdma_recvcq_process_wc(struct ib_wc *wc, struct list_head *sched_list)
|
|||||||
{
|
{
|
||||||
struct rpcrdma_rep *rep =
|
struct rpcrdma_rep *rep =
|
||||||
(struct rpcrdma_rep *)(unsigned long)wc->wr_id;
|
(struct rpcrdma_rep *)(unsigned long)wc->wr_id;
|
||||||
|
struct rpcrdma_ia *ia;
|
||||||
|
|
||||||
/* WARNING: Only wr_id and status are reliable at this point */
|
/* WARNING: Only wr_id and status are reliable at this point */
|
||||||
if (wc->status != IB_WC_SUCCESS)
|
if (wc->status != IB_WC_SUCCESS)
|
||||||
@ -290,8 +291,9 @@ rpcrdma_recvcq_process_wc(struct ib_wc *wc, struct list_head *sched_list)
|
|||||||
dprintk("RPC: %s: rep %p opcode 'recv', length %u: success\n",
|
dprintk("RPC: %s: rep %p opcode 'recv', length %u: success\n",
|
||||||
__func__, rep, wc->byte_len);
|
__func__, rep, wc->byte_len);
|
||||||
|
|
||||||
|
ia = &rep->rr_rxprt->rx_ia;
|
||||||
rep->rr_len = wc->byte_len;
|
rep->rr_len = wc->byte_len;
|
||||||
ib_dma_sync_single_for_cpu(rdmab_to_ia(rep->rr_buffer)->ri_id->device,
|
ib_dma_sync_single_for_cpu(ia->ri_id->device,
|
||||||
rdmab_addr(rep->rr_rdmabuf),
|
rdmab_addr(rep->rr_rdmabuf),
|
||||||
rep->rr_len, DMA_FROM_DEVICE);
|
rep->rr_len, DMA_FROM_DEVICE);
|
||||||
prefetch(rdmab_to_msg(rep->rr_rdmabuf));
|
prefetch(rdmab_to_msg(rep->rr_rdmabuf));
|
||||||
@ -1053,7 +1055,7 @@ rpcrdma_create_rep(struct rpcrdma_xprt *r_xprt)
|
|||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
rep->rr_buffer = &r_xprt->rx_buf;
|
rep->rr_rxprt = r_xprt;
|
||||||
return rep;
|
return rep;
|
||||||
|
|
||||||
out_free:
|
out_free:
|
||||||
@ -1423,7 +1425,7 @@ rpcrdma_recv_buffer_get(struct rpcrdma_req *req)
|
|||||||
void
|
void
|
||||||
rpcrdma_recv_buffer_put(struct rpcrdma_rep *rep)
|
rpcrdma_recv_buffer_put(struct rpcrdma_rep *rep)
|
||||||
{
|
{
|
||||||
struct rpcrdma_buffer *buffers = rep->rr_buffer;
|
struct rpcrdma_buffer *buffers = &rep->rr_rxprt->rx_buf;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
rep->rr_func = NULL;
|
rep->rr_func = NULL;
|
||||||
|
@ -173,8 +173,7 @@ struct rpcrdma_buffer;
|
|||||||
|
|
||||||
struct rpcrdma_rep {
|
struct rpcrdma_rep {
|
||||||
unsigned int rr_len;
|
unsigned int rr_len;
|
||||||
struct rpcrdma_buffer *rr_buffer;
|
struct rpcrdma_xprt *rr_rxprt;
|
||||||
struct rpc_xprt *rr_xprt;
|
|
||||||
void (*rr_func)(struct rpcrdma_rep *);
|
void (*rr_func)(struct rpcrdma_rep *);
|
||||||
struct list_head rr_list;
|
struct list_head rr_list;
|
||||||
struct rpcrdma_regbuf *rr_rdmabuf;
|
struct rpcrdma_regbuf *rr_rdmabuf;
|
||||||
|
Loading…
Reference in New Issue
Block a user