On 7/15/2015 8:07 PM, Jason Gunthorpe wrote:
On Wed, Jul 15, 2015 at 12:32:33AM -0700, Christoph Hellwig wrote:int rdma_create_mr(struct ib_pd *pd, enum rdma_mr_type mr, u32 max_pages, int flags);* array from a SG list * @mr: memory region * @sg: sg list * @sg_nents: number of elements in the sg * * Can fail if the HW is not able to register this * sg list. In case of failure - caller is responsible * to handle it (bounce-buffer, multiple registrations...) */ int ib_mr_set_sg(struct ib_mr *mr, struct scatterlist *sg, unsigned short sg_nents);Call this rdma_map_sg?/* register the MR */ frwr.opcode = IB_WR_FAST_REG_MR; frwr.wrid = my_wrid; frwr.wr.fast_reg.mr = mr; frwr.wr.fast_reg.iova = ib_sg_dma_adress(&sg[0]); frwr.wr.fast_reg.length = length; frwr.wr.fast_reg.access_flags = my_flags;Provide a helper to hide all this behind the scenes please: void rdma_init_mr_wr(struct ib_send_wr *wr, struct rdma_mr *mr, u64 wr_id, int mr_access_flags); Or if we got with Jason's suggestion split "int mr_access_flags" into "bool remote, bool is_write".Yes please. Considering the security implications we need to be much more careful API wise here. This is more of a code-as-documentation issue than a functional issue.
I gotta say, these suggestions of bool/write or supported_ops with a convert helper seem (to me at least) to make things more complicated. Why not just set the the access_flags as they are? I want local use? set IB_ACCESS_LOCAL_WRITE I want a peer to read from me? set IB_ACCESS_REMOTE_READ I want a peer to write to me? IB_ACCESS_REMOTE_WRITE ... isn't it much simpler? If we want to mask out iWARP difference, we use the Steve's roles_to_access() helper thing... -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
