Message ID | 522892BE.7070002@dev.mellanox.co.il (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Hal Rosenstock |
Headers | show |
Looks good to me. Thanks, Line On 09/05/13 16:18, Hal Rosenstock wrote: > If the same request is received twice then the second one will cause > error messages indicating duplicate alias GUIDs. In this case this is > a false warning. The second request should be treated as a void and > return success to the requester. > > Signed-off-by: Line Holen<Line.Holen@oracle.com> > Signed-off-by: Hal Rosenstock<hal@mellanox.com> > --- > diff --git a/opensm/osm_sa_guidinfo_record.c b/opensm/osm_sa_guidinfo_record.c > index 8323b38..28f6c0f 100644 > --- a/opensm/osm_sa_guidinfo_record.c > +++ b/opensm/osm_sa_guidinfo_record.c > @@ -653,15 +653,21 @@ add_alias_guid: > p_alias_guid->alias_guid, > &p_alias_guid->map_item); > if (p_alias_guid_check != p_alias_guid) { > - /* alias GUID is a duplicate */ > - OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 5108: " > - "Duplicate alias port GUID 0x%" PRIx64 > - " index %d base port GUID 0x%" PRIx64 "\n", > - cl_ntoh64(p_alias_guid->alias_guid), i, > - cl_ntoh64(p_alias_guid->p_base_port->guid)); > - osm_alias_guid_delete(&p_alias_guid); > - /* clear response guid at index to indicate duplicate */ > - p_rcvd_rec->guid_info.guid[i % 8] = 0; > + /* alias GUID is a duplicate if it exists on another port or on the same port but at another index */ > + if (p_alias_guid_check->p_base_port != p_port || > + (*p_port->p_physp->p_guids)[i] != set_alias_guid) { > + OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 5108: " > + "Duplicate alias port GUID 0x%" PRIx64 > + " index %d base port GUID 0x%" PRIx64 > + ", alias GUID already assigned to " > + "base port GUID 0x%" PRIx64 "\n", > + cl_ntoh64(p_alias_guid->alias_guid), i, > + cl_ntoh64(p_alias_guid->p_base_port->guid), > + cl_ntoh64(p_alias_guid_check->p_base_port->guid)); > + osm_alias_guid_delete(&p_alias_guid); > + /* clear response guid at index to indicate duplicate */ > + p_rcvd_rec->guid_info.guid[i % 8] = 0; > + } > } else { > del_alias_guid = (*p_port->p_physp->p_guids)[i]; > if (del_alias_guid) { > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/opensm/osm_sa_guidinfo_record.c b/opensm/osm_sa_guidinfo_record.c index 8323b38..28f6c0f 100644 --- a/opensm/osm_sa_guidinfo_record.c +++ b/opensm/osm_sa_guidinfo_record.c @@ -653,15 +653,21 @@ add_alias_guid: p_alias_guid->alias_guid, &p_alias_guid->map_item); if (p_alias_guid_check != p_alias_guid) { - /* alias GUID is a duplicate */ - OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 5108: " - "Duplicate alias port GUID 0x%" PRIx64 - " index %d base port GUID 0x%" PRIx64 "\n", - cl_ntoh64(p_alias_guid->alias_guid), i, - cl_ntoh64(p_alias_guid->p_base_port->guid)); - osm_alias_guid_delete(&p_alias_guid); - /* clear response guid at index to indicate duplicate */ - p_rcvd_rec->guid_info.guid[i % 8] = 0; + /* alias GUID is a duplicate if it exists on another port or on the same port but at another index */ + if (p_alias_guid_check->p_base_port != p_port || + (*p_port->p_physp->p_guids)[i] != set_alias_guid) { + OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 5108: " + "Duplicate alias port GUID 0x%" PRIx64 + " index %d base port GUID 0x%" PRIx64 + ", alias GUID already assigned to " + "base port GUID 0x%" PRIx64 "\n", + cl_ntoh64(p_alias_guid->alias_guid), i, + cl_ntoh64(p_alias_guid->p_base_port->guid), + cl_ntoh64(p_alias_guid_check->p_base_port->guid)); + osm_alias_guid_delete(&p_alias_guid); + /* clear response guid at index to indicate duplicate */ + p_rcvd_rec->guid_info.guid[i % 8] = 0; + } } else { del_alias_guid = (*p_port->p_physp->p_guids)[i]; if (del_alias_guid) {