[rds-devel] [ofa-general] [PATCH RFC] rds: add iwarp support

Or Gerlitz ogerlitz at voltaire.com
Tue Jul 8 05:52:32 PDT 2008


Olaf Kirch wrote:
> One theoretical problem is what happens if the application wants to register a memory range and send the rkey to two peers at the same time? We would have to stall the second send explicitly as long as we haven't seen the completion for the first send.
Indeed.

Basically I think that the fastreg designers envisioned a p2p (i.e 
client - server) transactional protocol where the client flow is:

c1. get bunch of pages from upper layer
c2. apply dma mapping
c3. get MR from a preallocated pool, compute new rkey (8/32 bits 
portion) for this MR
c4. issue fastreg WR on the pages to make the new rkey valid for this MR
c5. issue send "request for rdma transaction" which contains the new 
rkey/stag

second the server does

s1: process request, get rkey, get local buffer from pool
s2: issue rdma WR
s3: write the data to backend storage or deliver it to upper layers 
upper layers
s4: send response + remote invalidate WR on the rdma completion

third the client does

c6: recv response
c7: return MR to pool
c8: apply dma unmapping
c9: hand the response to upper layers

note that

- stage s1 can be further enhanced to use fastreg also at the server side
- there might be some ack to get from storage / upper layers between s3 
to s4
- you probably want to negotiate the remote invalidate capability 
between the client and server upon connection set up

Do you have an applicative usage for registering the same --memory-- 
with the same --rkey-- for two peers?

Or.




More information about the general mailing list