Or Gerlitz wrote:
Steve Wise wrote:
So you allocate the rkey/stag up front, allocate page_lists up front, then as needed you populate your page list and bind it to the rkey/stag via IB_WR_FAST_REG_MR, and invalidate that mapping via IB_WR_INVALIDATE_MR. You can do this any number of times, and with proper fencing, you can pipeline these mappings. Eventually when you're done doing IO (like for NFSRDMA when the mount is unmounted) you free up the page list(s) and mr/rkey/stag.
Yes, that was my thought as well.

Just to make sure, by "proper fencing" your understanding is that for both IB and iWARP the ULP should not wait for the fmr work request to complete and post the send work-request carrying the rkey/stag with the IB_SEND_FENCE flag?

Looking in the IB spec, its seems that the fence indicator only applies to previous rdma-read / atomic operations, eg in section 11.4.1.1 POST SEND REQUEST it says:
Fence indicator. If the fence indicator is set, then all prior RDMA Read and Atomic Work Requests on the queue must be completed before starting to process this Work Request.


The fast register and invalidate work requests require that they be completed by the device _before_ processing any subsequent work requests. So you can post subsequent SEND WRs that utilize the rkey without problems.

In addition, invalidate allows a local fence which means the device will no begin processing the invalitdae until all _prior_ work requests complete (similar to a read fence but for all prior WRS).

Steve.
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to