From e6823d9acfd1656bbd40b160199cc172007f8006 Mon Sep 17 00:00:00 2001 From: "Christopher J. Morrone" <morrone2@llnl.gov> Date: Thu, 7 Jul 2005 01:19:12 +0000 Subject: [PATCH] Use correct adapter name for all windows in fed_unload_table --- src/plugins/switch/federation/federation.c | 59 +++++++++------------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/src/plugins/switch/federation/federation.c b/src/plugins/switch/federation/federation.c index 3879ded2538..2c0e6076081 100644 --- a/src/plugins/switch/federation/federation.c +++ b/src/plugins/switch/federation/federation.c @@ -288,57 +288,45 @@ _cache_lid(fed_adapter_t *ap) strncpy(lid_cache[adapter_num].name, ap->name, FED_ADAPTERNAME_LEN); } -/* Check lid cache for a given lid and return the associated adapter - * name. - * - * Used by: slurmd - */ -static char * -_get_adapter_from_lid(int lid) -{ - int i; - - for(i = 0; i < FED_MAXADAPTERS; i++) { - if(lid_cache[i].lid == lid) { - return lid_cache[i].name; - } - } - - return NULL; -} -/* Check lid cache for a given lid and return the associated network_id +/* Check lid cache for an adapter name and return the network id. * * Used by: slurmd */ static uint16_t -_get_network_id_from_lid(int lid) +_get_network_id_from_adapter(char *adapter_name) { int i; - - for(i = 0; i < FED_MAXADAPTERS; i++) { - if(lid_cache[i].lid == lid) { + + for (i = 0; i < FED_MAXADAPTERS; i++) { + if (!strncmp(adapter_name, lid_cache[i].name, + FED_ADAPTERNAME_LEN)) return lid_cache[i].network_id; - } } - - return -1; + + return (uint16_t) -1; } + +/* Check lid cache for an adapter name and return the lid. + * + * Used by: slurmd + */ static uint16_t -_get_network_id_from_adapter(char *adapter_name) +_get_lid_from_adapter(char *adapter_name) { int i; for (i = 0; i < FED_MAXADAPTERS; i++) { if (!strncmp(adapter_name, lid_cache[i].name, FED_ADAPTERNAME_LEN)) - return lid_cache[i].network_id; + return lid_cache[i].lid; } return (uint16_t) -1; } + /* Explicitly strip out carriage-return and new-line */ static void _strip_cr_nl(char *line) { @@ -1818,23 +1806,26 @@ fed_unload_table(fed_jobinfo_t *jp) { int i, j; int err; - char *adapter; + char *adapter_name; NTBL **table; uint32_t table_length; + int local_lid; assert(jp); assert(jp->magic == FED_JOBINFO_MAGIC); for (i = 0; i < jp->tables_per_task; i++) { table = jp->tableinfo[i].table; table_length = jp->tableinfo[i].table_length; + adapter_name = jp->tableinfo[i].adapter_name; + local_lid = _get_lid_from_adapter(adapter_name); for(j = 0; j < table_length; j++) { - adapter = _get_adapter_from_lid(table[j]->lid); - if(adapter == NULL) + if(table[j]->lid != local_lid) continue; - debug3(" freeing adapter %s window %d job_key %d", - adapter, table[j]->window_id, jp->job_key); - err = ntbl_unload_window(NTBL_VERSION, adapter, + debug3("freeing adapter %s lid %d window %d job_key %d", + adapter_name, table[j]->lid, + table[j]->window_id, jp->job_key); + err = ntbl_unload_window(NTBL_VERSION, adapter_name, jp->job_key, table[j]->window_id); if(err != NTBL_SUCCESS) { -- GitLab