Re: [PATCH V3 1/5] RDMA/core: Transport-independent access flags

Sagi Grimberg
2015-07-14T09:05:53Z

On 7/14/2015 10:25 AM, 'Christoph Hellwig' wrote:
> On Mon, Jul 13, 2015 at 10:57:48AM -0600, Jason Gunthorpe wrote:
>>> Currently various drivers are using ib_get_dma_mr with remote flags
>>> unfortunately, e.g. the SRP initiator driver uses it to optimize away
>>> memory registrtions for single SGL entry requests.
>>
>> Unconditionally? Ugh. Maybe we do need the warn_on :(
>
> There is a "register_always" flag to always use real MRs, but it's
> off by default:
>
> if (count == 1 && !register_always) {
> /*
> * The midlayer only generated a single gather/scatter
> * entry, or DMA mapping coalesced everything to a
> * single entry. So a direct descriptor along with
> * the DMA MR suffices.
> */
> struct srp_direct_buf *buf = (void *) cmd->add_data;
>
> buf->va = cpu_to_be64(ib_sg_dma_address(ibdev, scat));
> buf->key = cpu_to_be32(target->rkey);
> buf->len = cpu_to_be32(ib_sg_dma_len(ibdev, scat));
>
> req->nmdesc = 0;
> goto map_complete;
> }
>

iser has it too. I have a similar patch with a flag for iser (its
behind a bulk of patches that are still pending though).