[ofa-general] Re: OpenSM handling of defunct SMs

Sasha Khapyorsky sashak at voltaire.com
Mon Nov 17 22:04:38 PST 2008


Hi Hal,

On 10:59 Mon 17 Nov     , Hal Rosenstock wrote:
> 
> What I observe is that OpenSM 3.2.2 continues to poll/retry SMInfo for
> a now defunct SM which spams the OpenSM log.
> 
> It looks like SMs are removed from the sm_guid_tbl only when the port
> is dropped/removed. Shouldn't it also be removed subsequent to a trap
> 144 which is indicating that the capability mask changed (and the new
> capability no longer include IsSM) ? I don't see this anywhere in the
> code. Am I missing something ?

It looks like a bug.

> 
> If so, should osm_port_info_rcv.c:__osm_pi_rcv_process_endport remove
> these so rather than:
> 
>                 p_sm_tbl = &sm->p_subn->sm_guid_tbl;
>                 p_sm = (osm_remote_sm_t *) cl_qmap_get(p_sm_tbl, port_guid);
>                 if (p_sm != (osm_remote_sm_t *) cl_qmap_end(p_sm_tbl))
>                         /* clean it up */
>                         p_sm->smi.pri_state = 0xF0 & p_sm->smi.pri_state;
> 
>                 if (p_pi->capability_mask & IB_PORT_CAP_IS_SM) {
> 
> it should be something like:
>                 p_sm_tbl = &sm->p_subn->sm_guid_tbl;
>                 if (p_pi->capability_mask & IB_PORT_CAP_IS_SM) {
>                     p_sm = (osm_remote_sm_t *) cl_qmap_get(p_sm_tbl, port_guid);
>                     if (p_sm != (osm_remote_sm_t *) cl_qmap_end(p_sm_tbl))
>                             /* clean it up */
>                             p_sm->smi.pri_state = 0xF0 & p_sm->smi.pri_state;
>                     ...
>                 } else
>                     p_sm = (osm_remote_sm_t *)
> cl_qmap_remove(p_sm_tbl, port_guid);

Yes, I guess it should be something like this. Would you care about the
patch?

Sasha



More information about the general mailing list