[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