Browse Source

RDMA/cxgb4: Wake up waiters after flushing the qp

When transitioning into ERROR state, the QP was getting flushed after
waking up any waiters.  This can cause applications to miss flushed work
requests which can stall an NFS mount.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Steve Wise 10 years ago
parent
commit
5b34180883
1 changed files with 1 additions and 1 deletions
  1. 1 1
      drivers/infiniband/hw/cxgb4/qp.c

+ 1 - 1
drivers/infiniband/hw/cxgb4/qp.c

@@ -1538,9 +1538,9 @@ err:
 	set_state(qhp, C4IW_QP_STATE_ERROR);
 	set_state(qhp, C4IW_QP_STATE_ERROR);
 	free = 1;
 	free = 1;
 	abort = 1;
 	abort = 1;
-	wake_up(&qhp->wait);
 	BUG_ON(!ep);
 	BUG_ON(!ep);
 	flush_qp(qhp);
 	flush_qp(qhp);
+	wake_up(&qhp->wait);
 out:
 out:
 	mutex_unlock(&qhp->mutex);
 	mutex_unlock(&qhp->mutex);