mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
xprtrdma: Toggle XPRT_CONGESTED in xprtrdma's slot methods
Commit48be539dd4
("xprtrdma: Introduce ->alloc_slot call-out for xprtrdma") added a separate alloc_slot and free_slot to the RPC/RDMA transport. Later, commit75891f502f
("SUNRPC: Support for congestion control when queuing is enabled") modified the generic alloc/free_slot methods, but neglected the methods in xprtrdma. Found via code review. Fixes:75891f502f
("SUNRPC: Support for congestion control ... ") Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
eed48a9c16
commit
395790566e
@ -571,6 +571,7 @@ xprt_rdma_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task)
|
||||
return;
|
||||
|
||||
out_sleep:
|
||||
set_bit(XPRT_CONGESTED, &xprt->state);
|
||||
rpc_sleep_on(&xprt->backlog, task, NULL);
|
||||
task->tk_status = -EAGAIN;
|
||||
}
|
||||
@ -589,7 +590,8 @@ xprt_rdma_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *rqst)
|
||||
|
||||
memset(rqst, 0, sizeof(*rqst));
|
||||
rpcrdma_buffer_put(&r_xprt->rx_buf, rpcr_to_rdmar(rqst));
|
||||
rpc_wake_up_next(&xprt->backlog);
|
||||
if (unlikely(!rpc_wake_up_next(&xprt->backlog)))
|
||||
clear_bit(XPRT_CONGESTED, &xprt->state);
|
||||
}
|
||||
|
||||
static bool rpcrdma_check_regbuf(struct rpcrdma_xprt *r_xprt,
|
||||
|
Loading…
Reference in New Issue
Block a user