linux-stable/net/sunrpc/xprtrdma
Chuck Lever 7b3d770c67 xprtrdma: Re-arm after missed events
ib_req_notify_cq(IB_CQ_REPORT_MISSED_EVENTS) returns a positive
value if WCs were added to a CQ after the last completion upcall
but before the CQ has been re-armed.

Commit 7f23f6f6e3 ("xprtrmda: Reduce lock contention in
completion handlers") assumed that when ib_req_notify_cq() returned
a positive RC, the CQ had also been successfully re-armed, making
it safe to return control to the provider without losing any
completion signals. That is an invalid assumption.

Change both completion handlers to continue polling while
ib_req_notify_cq() returns a positive value.

Fixes: 7f23f6f6e3 ("xprtrmda: Reduce lock contention in ...")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: Devesh Sharma <devesh.sharma@avagotech.com>
Tested-By: Devesh Sharma <devesh.sharma@avagotech.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2015-11-02 13:45:15 -05:00
..
fmr_ops.c xprtrdma: Replace global lkey with lkey local to PD 2015-09-25 10:46:51 -04:00
frwr_ops.c xprtrdma: don't log warnings for flushed completions 2015-11-02 13:45:15 -05:00
Makefile rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
module.c rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
physical_ops.c xprtrdma: Replace global lkey with lkey local to PD 2015-09-25 10:46:51 -04:00
rpc_rdma.c xprtrdma: Count RDMA_NOMSG type calls 2015-08-05 16:21:28 -04:00
svc_rdma.c rpcrdma: Merge svcrdma and xprtrdma modules into one 2015-06-04 16:56:02 -04:00
svc_rdma_marshal.c svcrdma: Keep rpcrdma_msg fields in network byte-order 2015-06-04 16:55:59 -04:00
svc_rdma_recvfrom.c svcrdma: Fix NFS server crash triggered by 1MB NFS WRITE 2015-10-12 11:55:43 -04:00
svc_rdma_sendto.c svcrdma: Clean up svc_rdma_get_reply_array() 2015-07-20 14:58:47 -04:00
svc_rdma_transport.c Changes for 4.3 2015-09-09 08:33:31 -07:00
transport.c xprtrdma: Enable swap-on-NFS/RDMA 2015-11-02 13:45:15 -05:00
verbs.c xprtrdma: Re-arm after missed events 2015-11-02 13:45:15 -05:00
xprt_rdma.h xprtrdma: Replace global lkey with lkey local to PD 2015-09-25 10:46:51 -04:00