Hi Sasha,<br><br>
<div class="gmail_quote">On Sun, Aug 2, 2009 at 6:09 AM, Sasha Khapyorsky <span dir="ltr"><<a href="mailto:sashak@voltaire.com" target="_blank">sashak@voltaire.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi Hal,<br>
<div>
<div></div>
<div><br>On 09:51 Fri 31 Jul     , Hal Rosenstock wrote:<br>><br>> When osm_mesh_node_delete is called, osm_switch_delete may already have<br>> been called so sw->p_sw is no longer valid to be used although it was<br>
> being used to obtain num_ports.<br>><br>> Fix this by performing osm_mesh_delete_switches at the end of lash_process.<br>><br>> Signed-off-by: Hal Rosenstock <<a href="mailto:hal.rosenstock@gmail.com" target="_blank">hal.rosenstock@gmail.com</a>><br>
> ---<br>> Changes since v1:<br>> Rather than saving num_ports in the mesh node structure on creation and using<br>> this on deletion, mesh switches deletion should occur at end of the lash<br>> calculation as none of this state is needed after that<br>
> Approach proposed by Sasha<br>><br>> diff --git a/opensm/include/opensm/osm_mesh.h b/opensm/include/opensm/osm_mesh.h<br>> index 173fa86..89c07e5 100644<br>> --- a/opensm/include/opensm/osm_mesh.h<br>> +++ b/opensm/include/opensm/osm_mesh.h<br>
> @@ -1,5 +1,6 @@<br>>  /*<br>>   * Copyright (c) 2088      System Fabric Works, Inc.<br>> + * Copyright (c) 2009      HNR Consulting. All rights reserved.<br>>   *<br>>   * This software is available to you under a choice of one of two<br>
>   * licenses.  You may choose to be licensed under the terms of the GNU<br>> @@ -70,6 +71,7 @@ typedef struct _mesh_node {<br>>  } mesh_node_t;<br>><br>>  void osm_mesh_node_delete(struct _lash *p_lash, struct _switch *sw);<br>
> +void osm_mesh_delete_switches(struct _lash *p_lash);<br>>  int osm_mesh_node_create(struct _lash *p_lash, struct _switch *sw);<br>>  int osm_do_mesh_analysis(struct _lash *p_lash);<br>><br>> diff --git a/opensm/opensm/osm_mesh.c b/opensm/opensm/osm_mesh.c<br>
> index 23fad87..b22fe6e 100644<br>> --- a/opensm/opensm/osm_mesh.c<br>> +++ b/opensm/opensm/osm_mesh.c<br>> @@ -1,5 +1,6 @@<br>>  /*<br>>   * Copyright (c) 2008,2009      System Fabric Works, Inc. All rights reserved.<br>
> + * Copyright (c) 2009           HNR Consulting. All rights reserved.<br>>   *<br>>   * This software is available to you under a choice of one of two<br>>   * licenses.  You may choose to be licensed under the terms of the GNU<br>
> @@ -1358,6 +1359,20 @@ void osm_mesh_node_delete(lash_t *p_lash, switch_t *sw)<br>>  }<br>><br>>  /*<br>> + * osm_mesh_delete_switches - cleanup switches resources<br>> + */<br>> +void osm_mesh_delete_switches(lash_t *p_lash)<br>
> +{<br>> +     if (p_lash->switches) {<br>> +             unsigned id;<br>> +             for (id = 0; ((int)id) < p_lash->num_switches; id++)<br>> +                     if (p_lash->switches[id])<br>
> +                             osm_mesh_node_delete(p_lash,<br>> +                                                  p_lash->switches[id]);<br>> +     }<br>> +}<br><br></div></div>Why should it be in osm_mesh.c? osm_mesh_node_create() and<br>
osm_mesh_node_delete() are called in osm_ucast_lash.c now.<br><br>For me it looks that more appropriate place for such cleanup is<br>lash_free_structures() func in osm_ucast_lash.c.</blockquote>
<div> </div>
<div>Not quite as it cannot be cleaned up until after discover_network_properties is called and succeeds.</div>
<div> </div>
<div>-- Hal</div>
<div> </div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><span></span><br><font color="#888888"><br>Sasha<br></font>
<div>
<div></div>
<div>_______________________________________________<br>general mailing list<br><a href="mailto:general@lists.openfabrics.org" target="_blank">general@lists.openfabrics.org</a><br><a href="http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general" target="_blank">http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general</a><br>
<br>To unsubscribe, please visit <a href="http://openib.org/mailman/listinfo/openib-general" target="_blank">http://openib.org/mailman/listinfo/openib-general</a><br></div></div></blockquote></div><br>