mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
xprtrdma: Put flushed Receives on free list instead of destroying them
Defer destruction of an rpcrdma_rep until transport tear-down to preserve the rb_all_reps list while Receives flush. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Tom Talpey <tom@talpey.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
15788d1d10
commit
5030c9a938
@ -80,6 +80,8 @@ static void rpcrdma_sendctx_put_locked(struct rpcrdma_xprt *r_xprt,
|
||||
struct rpcrdma_sendctx *sc);
|
||||
static int rpcrdma_reqs_setup(struct rpcrdma_xprt *r_xprt);
|
||||
static void rpcrdma_reqs_reset(struct rpcrdma_xprt *r_xprt);
|
||||
static void rpcrdma_rep_put(struct rpcrdma_buffer *buf,
|
||||
struct rpcrdma_rep *rep);
|
||||
static void rpcrdma_rep_destroy(struct rpcrdma_rep *rep);
|
||||
static void rpcrdma_reps_unmap(struct rpcrdma_xprt *r_xprt);
|
||||
static void rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt);
|
||||
@ -211,7 +213,7 @@ static void rpcrdma_wc_receive(struct ib_cq *cq, struct ib_wc *wc)
|
||||
|
||||
out_flushed:
|
||||
rpcrdma_flush_disconnect(r_xprt, wc);
|
||||
rpcrdma_rep_destroy(rep);
|
||||
rpcrdma_rep_put(&r_xprt->rx_buf, rep);
|
||||
}
|
||||
|
||||
static void rpcrdma_update_cm_private(struct rpcrdma_ep *ep,
|
||||
|
Loading…
Reference in New Issue
Block a user