mirror of https://gitee.com/openkylin/linux.git
xprtrdma: Revert commit e7104a2a96
('xprtrdma: Cap req_cqinit').
The root of the problem was that sends (especially unsignalled FASTREG and LOCAL_INV Work Requests) were not properly flow- controlled, which allowed a send queue overrun. Now that the RPC/RDMA reply handler waits for invalidation to complete, the send queue is properly flow-controlled. Thus this limit is no longer necessary. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Tested-by: Devesh Sharma <devesh.sharma@avagotech.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
68791649a7
commit
26ae9d1c5a
|
@ -616,10 +616,8 @@ rpcrdma_ep_create(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia,
|
||||||
|
|
||||||
/* set trigger for requesting send completion */
|
/* set trigger for requesting send completion */
|
||||||
ep->rep_cqinit = ep->rep_attr.cap.max_send_wr/2 - 1;
|
ep->rep_cqinit = ep->rep_attr.cap.max_send_wr/2 - 1;
|
||||||
if (ep->rep_cqinit > RPCRDMA_MAX_UNSIGNALED_SENDS)
|
if (ep->rep_cqinit <= 2)
|
||||||
ep->rep_cqinit = RPCRDMA_MAX_UNSIGNALED_SENDS;
|
ep->rep_cqinit = 0; /* always signal? */
|
||||||
else if (ep->rep_cqinit <= 2)
|
|
||||||
ep->rep_cqinit = 0;
|
|
||||||
INIT_CQCOUNT(ep);
|
INIT_CQCOUNT(ep);
|
||||||
init_waitqueue_head(&ep->rep_connect_wait);
|
init_waitqueue_head(&ep->rep_connect_wait);
|
||||||
INIT_DELAYED_WORK(&ep->rep_connect_worker, rpcrdma_connect_worker);
|
INIT_DELAYED_WORK(&ep->rep_connect_worker, rpcrdma_connect_worker);
|
||||||
|
|
|
@ -88,12 +88,6 @@ struct rpcrdma_ep {
|
||||||
struct delayed_work rep_connect_worker;
|
struct delayed_work rep_connect_worker;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Force a signaled SEND Work Request every so often,
|
|
||||||
* in case the provider needs to do some housekeeping.
|
|
||||||
*/
|
|
||||||
#define RPCRDMA_MAX_UNSIGNALED_SENDS (32)
|
|
||||||
|
|
||||||
#define INIT_CQCOUNT(ep) atomic_set(&(ep)->rep_cqcount, (ep)->rep_cqinit)
|
#define INIT_CQCOUNT(ep) atomic_set(&(ep)->rep_cqcount, (ep)->rep_cqinit)
|
||||||
#define DECR_CQCOUNT(ep) atomic_sub_return(1, &(ep)->rep_cqcount)
|
#define DECR_CQCOUNT(ep) atomic_sub_return(1, &(ep)->rep_cqcount)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue