Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76ee8fd6 authored by Chuck Lever's avatar Chuck Lever Committed by J. Bruce Fields
Browse files

svcrdma: Drain QP before freeing svcrdma_xprt



If the server has forced a disconnect, the associated QP has not
been moved to the Error state, and thus Receives are still posted.

Ensure Receives (and any other outstanding WRs) are drained to
release resources that can be freed during teardown of the
svcrdma_xprt.

Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 0319aafc
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1180,6 +1180,9 @@ static void __svc_rdma_free(struct work_struct *work)

	dprintk("svcrdma: %s(%p)\n", __func__, rdma);

	if (rdma->sc_qp && !IS_ERR(rdma->sc_qp))
		ib_drain_qp(rdma->sc_qp);

	/* We should only be called from kref_put */
	if (atomic_read(&xprt->xpt_ref.refcount) != 0)
		pr_err("svcrdma: sc_xprt still in use? (%d)\n",