[openib-general] IPoIB and MC Group leaving

Hal Rosenstock halr at voltaire.com
Mon Dec 4 06:50:04 PST 2006


Roland,

Currently, the IPoIB code issues what I would term a "preemptive" leave
to the SA in a number of cases:

ulp/ipoib/ipoib_multicast.c:ipoib_mcast_leave
...
        /*
         * Just make one shot at leaving and don't wait for a reply;
         * if we fail, too bad.
         */
        ret = ib_sa_mcmember_rec_delete(priv->ca, priv->port, &rec,
                                        IB_SA_MCMEMBER_REC_MGID         |
                                        IB_SA_MCMEMBER_REC_PORT_GID     |
                                        IB_SA_MCMEMBER_REC_PKEY         |
                                        IB_SA_MCMEMBER_REC_JOIN_STATE,
                                        0, GFP_ATOMIC, NULL,
                                        mcast, &mcast->query);

This is to make sure node is not registered in any groups. This leave
may not be successful. Failure is "normal" when the subnet is starting
up "fresh". There are other cases where the failure is indeed a failure.

However, it is "unsafe" to issue a subsequent join until the leave has
been responded to as that is the only "reliability" guarantee that the
SA has received the request and processed it. I know the comment says
that the result of the leave is irrelevant. However, the fact that it
has been processed or not is needed for the subsequent (related) join to
be issued. Pipelining of joins/leaves can only occur if they are
unrelated. I'm not sure the IBA spec is clear on this. Am I wrong about
this ? 

-- Hal







More information about the general mailing list