> On Nov 17, 2016, at 10:04 AM, Chuck Lever <chuck.lever@xxxxxxxxxx> wrote: > >> On Nov 17, 2016, at 7:46 AM, Christoph Hellwig <hch@xxxxxx> wrote: >> Also did you try to always register for > max_sge >> calls? The code can already register all segments with the >> rdma_rw_force_mr module option, so it would only need a small tweak for >> that behavior. > > For various reasons I decided the design should build one WR chain for > each RDMA segment provided by the client. Good clients expose just > one RDMA segment for the whole NFS READ payload. > > Does force_mr make the generic API use FRWR with RDMA Write? I had > assumed it changed only the behavior with RDMA Read. I'll try that > too, if RDMA Write can easily be made to use FRWR. Unfortunately, some RPC replies are formed from two or three discontiguous buffers. The gap test in ib_sg_to_pages returns a smaller number than sg_nents in this case, and rdma_rw_init_ctx fails. Thus with my current prototype I'm not able to test with FRWR. I could fix this in my prototype, but it would be nicer for me if rdma_rw_init_ctx handled this case the same for FRWR as it does for physical addressing, which doesn't seem to have any problem with a discontiguous SGL. > But I'd like a better explanation for this result. Could be a bug > in my implementation, my design, or in the driver. Continuing to > investigate. -- Chuck Lever -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html