[rds-devel] So what is an rdma identifer - and how is it used ?

Richard Frank richard.frank at oracle.com
Wed Nov 14 17:31:57 PST 2007


When an rdma operation is initiated, assuming the operation is accepted 
by RDS (arg checking passes) the RDS service returns an ordered 
identifier which is relevant to the destination of the rdma.

An rdma identifier can be used to detect the completion of one or more 
rdma operations.

An RDS barrier operation is used to retrieve the last rdma completed to 
a destination.

rdma identifiers are ordered such that if ten rdma operations are 
initiated to a destination then when the rdma id for the tenth rdma 
completes - all prior rdmas are known to have completed.

The rds_is_rdma_done(my_rdma_id, done_rdma_id) macro is used to detect 
rdma operation completion.

For example,

struct rdma_id my_rdma_id = issue_rdma_operation(destination a);
..
..
..
while (!rds_is_rdma_done(my_rdma_id,rds_barrier(destination a))))
   poll(fd,timeout);

And further,

struct rdma_id my_rdma_ids[10]

for (i = 0; i < 10; i++)
    my_rdma_ids[i] = issue_rdma_operation(destination a)

while (!rds_is_rdma_done(my_rdma_id[9],rds_barrier(destination a))))
   poll(fd,timeout);

At this point all 10 rdma operations are complete.

NOTE: detecting completion of an rdma does not imply anything about the 
success or failure of an rdma operation.




More information about the rds-devel mailing list