[ofa-general] librdmacm feature request
Steve Wise
swise at opengridcomputing.com
Fri Nov 9 07:33:57 PST 2007
Just thinking out loud:
What if each cm_id has its own fd? Then they could be associated with a
channel, which is just an object that tracks which fds are in the
channel and uses select()/poll() on the entire set of fds for
rdma_get_cm_event().
So moving a cm_id to another channel is simple and doesn't involve
moving the events since they will be queued on the cm_id's fd. You just
move the fd from one channel to another and events keep flowing as normal...
Steve.
Sean Hefty wrote:
> The only idea I've been able to come up with for moving an rdma_cm_id
> between fd's is to perform a two-step process. (The two steps would be
> done by a single API call.)
>
> 1. prepare to modify(old_fd, rdma_cm_id)
> Somehow mark that the rdma_cm_id will migrate to a new fd.
> 2. commit modify(new_fd, rdma_cm_id)
> Migrates the rdma_cm_id to the new fd and moves the events.
>
> Using two steps provides the kernel code the file context that it needs,
> and should protect against the fd's being closed. The biggest hurdle to
> this is ensuring that the same user owns both fd's, possibly by
> validating some sort of key between the two steps. I just haven't
> figured out what works as a key.
>
> - Sean
> _______________________________________________
> general mailing list
> general at lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
>
> To unsubscribe, please visit
> http://openib.org/mailman/listinfo/openib-general
More information about the general
mailing list