On Wed, Jul 08, 2015 at 01:08:42PM -0600, Jason Gunthorpe wrote: > Then, what is left is all remote MRs and maybe it will be clearer what > to do about them then... >From looking at that for a while the APIs needed seem pretty simple to me from a consumer perspective: struct rdma_mr *rmda_alloc_mr(struct ib_pd *pd, unsigned int nr_pages); void rdma_free_mr(struct rdma_mr *mr); /* updates *sg if the SG couldn't be fully registered due to offsets */ int rdma_register_sg(struct rdma_mr *mr, struct scatterlist **sg, u32 *pkey, u32 *offset, u32 *len); void rdma_unregister_sg(struct rdma_mr *mr, struct scatterlist *sg); plus maybe a pool alloc API if we care about FMR performance. Note that this assumes that the iSER bounce buffer hacks are replaced with the QUEUE_FLAG_SG_GAPS flags and a change to the SG_IO code to bounce buffer for vectored SG_IO calls. I'm happy to provide a patch for that if I can find a volunteer for testing. -- 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