On Jul 20, 2015, at 6:26 PM, Jason Gunthorpe <jgunthorpe@xxxxxxxxxxxxxxxxxxxx> wrote: > On Mon, Jul 20, 2015 at 03:03:11PM -0400, Chuck Lever wrote: >> + iov->length = size; >> + iov->lkey = ia->ri_have_dma_lkey ? >> + ia->ri_dma_lkey : ia->ri_bind_mem->lkey; >> + rb->rg_size = size; >> + rb->rg_owner = NULL; >> return rb; > > There is something odd looking about this.. > > ri_bind_mem is only setup in the RPCRDMA_ALLPHYSICAL and > RPCRDMA_MTHCAFMR cases. > > RPCRDMA_FRMR doesn't set it up. > > So this code in rpcrdma_alloc_regbuf is never called for the FRMR > case? > > If yes, then, how is FRMR working? There is absolutely no reason to > use FRMR to register local send buffers, just use the global all > memory lkey... > > If no, then that is an oops? I’ve tested this code, no oops. FRWR always uses the DMA lkey. xprtrdma does not use FRWR if IB_DEVICE_LOCAL_DMA_LKEY is not asserted. FMR and PHYSICAL use the DMA lkey if it exists, otherwise they use an lkey from ib_get_dma_mr. Look in 06/15, this is cleaned up. -- Chuck Lever -- 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