On 04/07/2015 07:42 PM, Jason Gunthorpe wrote: [snip] >>> @@ -992,8 +992,8 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) >>> dma_mr_acc = IB_ACCESS_LOCAL_WRITE; >>> } else >>> need_dma_mr = 0; >>> - break; >>> - case RDMA_TRANSPORT_IB: >>> + } else if (rdma_ib_mgmt(newxprt->sc_cm_id->device, >>> + newxprt->sc_cm_id->port_num)) { >>> if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) { >>> need_dma_mr = 1; >>> dma_mr_acc = IB_ACCESS_LOCAL_WRITE; >> >> Now I'm even more confused. How is the presence of IB management >> related to needing a privileged lmr? > > Agree, this needs to be someone else. > > I think the test is probably based on this comment: > > * NB: iWARP requires remote write access for the data sink > * of an RDMA_READ. IB does not. > > So the if should be: > > if (cap_rdma_read_needs_write(..) && > !(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) { > need_dma_mr = 1; > dma_mr_acc = > (IB_ACCESS_LOCAL_WRITE | > IB_ACCESS_REMOTE_WRITE); > > And the identical if blocks merged. > > Plus the > if (rdma_transport_iwarp(newxprt->sc_cm_id->device, > newxprt->sc_cm_id->port_num)) > newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV Sounds good :-) I'll give this part a reform in next version. Regards, Michael Wang > > Jason > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html