On Fri, 2019-05-03 at 10:21 -0400, Chuck Lever wrote: > > On May 3, 2019, at 7:18 AM, Trond Myklebust <trondmy@xxxxxxxxx> > > wrote: > > > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > --- > > net/sunrpc/xprt.c | 61 ++++++++++--------- > > --- > > net/sunrpc/xprtrdma/rpc_rdma.c | 4 +- > > net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 4 +- > > net/sunrpc/xprtrdma/svc_rdma_transport.c | 8 +-- > > net/sunrpc/xprtsock.c | 23 ++++---- > > 5 files changed, 47 insertions(+), 53 deletions(-) > > For rpc_rdma.c and svc_rdma_backchannel.c: > > Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > > For svc_rdma_transport.c: > > These locks are server-side only. AFAICS it's not safe > to leave BH's enabled here. Can you drop these hunks? Oops... Yes, I don't know why I mistook that for the xprt- >transport_lock... You mean these 3 hunks, right? > > diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c > > b/net/sunrpc/xprtrdma/svc_rdma_transport.c > > index 027a3b07d329..18ffc6190ea9 100644 > > --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c > > +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c > > @@ -221,9 +221,9 @@ static void handle_connect_req(struct > > rdma_cm_id *new_cma_id, > > * Enqueue the new transport on the accept queue of the > > listening > > * transport > > */ > > - spin_lock_bh(&listen_xprt->sc_lock); > > + spin_lock(&listen_xprt->sc_lock); > > list_add_tail(&newxprt->sc_accept_q, &listen_xprt- > > >sc_accept_q); > > - spin_unlock_bh(&listen_xprt->sc_lock); > > + spin_unlock(&listen_xprt->sc_lock); > > > > set_bit(XPT_CONN, &listen_xprt->sc_xprt.xpt_flags); > > svc_xprt_enqueue(&listen_xprt->sc_xprt); > > @@ -396,7 +396,7 @@ static struct svc_xprt *svc_rdma_accept(struct > > svc_xprt *xprt) > > listen_rdma = container_of(xprt, struct svcxprt_rdma, sc_xprt); > > clear_bit(XPT_CONN, &xprt->xpt_flags); > > /* Get the next entry off the accept list */ > > - spin_lock_bh(&listen_rdma->sc_lock); > > + spin_lock(&listen_rdma->sc_lock); > > if (!list_empty(&listen_rdma->sc_accept_q)) { > > newxprt = list_entry(listen_rdma->sc_accept_q.next, > > struct svcxprt_rdma, sc_accept_q); > > @@ -404,7 +404,7 @@ static struct svc_xprt *svc_rdma_accept(struct > > svc_xprt *xprt) > > } > > if (!list_empty(&listen_rdma->sc_accept_q)) > > set_bit(XPT_CONN, &listen_rdma->sc_xprt.xpt_flags); > > - spin_unlock_bh(&listen_rdma->sc_lock); > > + spin_unlock(&listen_rdma->sc_lock); > > if (!newxprt) > > return NULL; > > > > -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx