Useful feature for torus debug Also, in report_torus_changes, no need for NULL pointer check on nt
Reviewed-by: Jim Schutt <[email protected]> Signed-off-by: Hal Rosenstock <[email protected]> --- diff --git a/opensm/osm_torus.c b/opensm/osm_torus.c index 1d847b3..4e5688f 100644 --- a/opensm/osm_torus.c +++ b/opensm/osm_torus.c @@ -7518,6 +7535,36 @@ out: } static +void dump_torus(struct torus *t) +{ + unsigned i, j, k; + unsigned x_sz = t->x_sz; + unsigned y_sz = t->y_sz; + unsigned z_sz = t->z_sz; + char path[1024]; + FILE *file; + + snprintf(path, sizeof(path), "%s/%s", t->osm->subn.opt.dump_files_dir, + "opensm-torus.dump"); + file = fopen(path, "w"); + if (!file) { + OSM_LOG(&t->osm->log, OSM_LOG_ERROR, + "ERR 4E47: cannot create file \'%s\'\n", path); + return; + } + + for (k = 0; k < z_sz; k++) + for (j = 0; j < y_sz; j++) + for (i = 0; i < x_sz; i++) + fprintf(file, "switch %u,%u,%u GUID 0x%04" + PRIx64 " (%s)\n", + i, j, k, + cl_ntoh64(t->sw[i][j][k]->n_id), + t->sw[i][j][k]->osm_switch->p_node->print_desc); + fclose(file); +} + +static void report_torus_changes(struct torus *nt, struct torus *ot) { unsigned cnt = 0; @@ -7525,7 +7572,10 @@ void report_torus_changes(struct torus *nt, struct torus *ot) unsigned y_sz = nt->y_sz; unsigned z_sz = nt->z_sz; unsigned max_changes = nt->max_changes; + if (OSM_LOG_IS_ACTIVE_V2(&nt->osm->log, OSM_LOG_ROUTING)) + dump_torus(nt); + - if (!(nt && ot)) + if (!ot) return; if (x_sz != ot->x_sz) { -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
