From f581597b2ad56b0765d1c7de1bc9b940175b258b Mon Sep 17 00:00:00 2001 From: Danny Auble <da@llnl.gov> Date: Thu, 21 Oct 2010 23:55:20 +0000 Subject: [PATCH] fixed a few more checks to be more dynamic --- src/plugins/select/bluegene/plugin/bluegene.c | 13 +++++ src/plugins/select/bluegene/plugin/bluegene.h | 2 + .../select/bluegene/plugin/dynamic_block.c | 54 +++++++++---------- src/plugins/select/bluegene/plugin/jobinfo.c | 24 ++------- 4 files changed, 43 insertions(+), 50 deletions(-) diff --git a/src/plugins/select/bluegene/plugin/bluegene.c b/src/plugins/select/bluegene/plugin/bluegene.c index 2c18a3da9be..bc1bc82d8f0 100644 --- a/src/plugins/select/bluegene/plugin/bluegene.c +++ b/src/plugins/select/bluegene/plugin/bluegene.c @@ -145,6 +145,19 @@ extern void fini_bg(void) ba_fini(); } +extern char *give_geo(int int_geo[SYSTEM_DIMENSIONS]) +{ + char *geo = NULL; + int i; + + for (i=0; i<SYSTEM_DIMENSIONS; i++) { + if (geo) + xstrcat(geo, "x"); + xstrfmtcat(geo, "%c", alpha_num[int_geo[i]]); + } + return geo; +} + /* * block_state_mutex should be locked before calling this function */ diff --git a/src/plugins/select/bluegene/plugin/bluegene.h b/src/plugins/select/bluegene/plugin/bluegene.h index 9b21b061bcc..588d7a2a0cc 100644 --- a/src/plugins/select/bluegene/plugin/bluegene.h +++ b/src/plugins/select/bluegene/plugin/bluegene.h @@ -132,6 +132,8 @@ extern int init_bg(void); /* Purge all plugin variables */ extern void fini_bg(void); +extern char *give_geo(int int_geo[SYSTEM_DIMENSIONS]); + extern bool blocks_overlap(bg_record_t *rec_a, bg_record_t *rec_b); extern void bg_requeue_job(uint32_t job_id, bool wait_for_start); diff --git a/src/plugins/select/bluegene/plugin/dynamic_block.c b/src/plugins/select/bluegene/plugin/dynamic_block.c index 858dd4fabe3..d0fbf4d5604 100644 --- a/src/plugins/select/bluegene/plugin/dynamic_block.c +++ b/src/plugins/select/bluegene/plugin/dynamic_block.c @@ -62,8 +62,6 @@ extern List create_dynamic_block(List block_list, List results = NULL; List new_blocks = NULL; bitstr_t *my_bitmap = NULL; - int geo[SYSTEM_DIMENSIONS]; - int i; blockreq_t blockreq; int cnodes = request->procs / bg_conf->cpu_ratio; char *unusable_nodes = NULL; @@ -89,24 +87,24 @@ extern List create_dynamic_block(List block_list, if(!bit_super_set(bg_record->bitmap, my_bitmap)) { bit_or(my_bitmap, bg_record->bitmap); - for(i=0; i<SYSTEM_DIMENSIONS; i++) - geo[i] = bg_record->geo[i]; + if(bg_conf->slurm_debug_flags - & DEBUG_FLAG_BG_PICK) - info("adding %s(%s) %s %c%c%c " - "%c%c%c %u", + & DEBUG_FLAG_BG_PICK) { + char *start_geo = + give_geo(bg_record->start); + char *geo = + give_geo((int *)bg_record->geo); + + info("adding %s(%s) %s %s %s %u", bg_record->bg_block_id, bg_record->nodes, bg_block_state_string( bg_record->state), - alpha_num[bg_record->start[X]], - alpha_num[bg_record->start[Y]], - alpha_num[bg_record->start[Z]], - alpha_num[geo[X]], - alpha_num[geo[Y]], - alpha_num[geo[Z]], + start_geo, geo, bg_record->node_cnt); - + xfree(start_geo); + xfree(geo); + } if(check_and_set_node_list( bg_record->bg_block_list) == SLURM_ERROR) { @@ -122,22 +120,19 @@ extern List create_dynamic_block(List block_list, } } else if(bg_conf->slurm_debug_flags & DEBUG_FLAG_BG_PICK) { - for(i=0; i<SYSTEM_DIMENSIONS; i++) - geo[i] = bg_record->geo[i]; + char *start_geo = give_geo(bg_record->start); + char *geo = give_geo((int *)bg_record->geo); - info("not adding %s(%s) %s %c%c%c " - "%c%c%c %u", + info("not adding %s(%s) %s %s %s %u ", bg_record->bg_block_id, bg_record->nodes, bg_block_state_string( bg_record->state), - alpha_num[bg_record->start[X]], - alpha_num[bg_record->start[Y]], - alpha_num[bg_record->start[Z]], - alpha_num[geo[X]], - alpha_num[geo[Y]], - alpha_num[geo[Z]], + start_geo, + geo, bg_record->node_cnt); + xfree(start_geo); + xfree(geo); } } list_iterator_destroy(itr); @@ -253,12 +248,11 @@ extern List create_dynamic_block(List block_list, //debug("going to create %d", request->size); if(!new_ba_request(request)) { - if(geo[X] == (uint16_t)NO_VAL) { - error("Problems with request for size %d geo %dx%dx%d", - request->size, - request->geometry[X], - request->geometry[Y], - request->geometry[Z]); + if(bg_record->geo[X] == (uint16_t)NO_VAL) { + char *geo = give_geo(request->geometry); + error("Problems with request for size %d geo %s", + request->size, geo); + xfree(geo); } else { error("Problems with request for size %d. " "No geo given.", diff --git a/src/plugins/select/bluegene/plugin/jobinfo.c b/src/plugins/select/bluegene/plugin/jobinfo.c index 419e54c6275..2a88ebd57a6 100644 --- a/src/plugins/select/bluegene/plugin/jobinfo.c +++ b/src/plugins/select/bluegene/plugin/jobinfo.c @@ -561,16 +561,8 @@ extern char *sprint_select_jobinfo(select_jobinfo_t *jobinfo, else xstrcat(geo, "0"); } - } else { - for (i=0; i<SYSTEM_DIMENSIONS; i++) { - if (geo) - xstrfmtcat(geo, "x%c", - alpha_num[jobinfo->geometry[i]]); - else - xstrfmtcat(geo, "%c", - alpha_num[jobinfo->geometry[i]]); - } - } + } else + geo = give_geo((int *)jobinfo->geometry); switch (mode) { case SELECT_PRINT_HEAD: @@ -693,16 +685,8 @@ extern char *xstrdup_select_jobinfo(select_jobinfo_t *jobinfo, int mode) else xstrcat(geo, "0"); } - } else { - for (i=0; i<SYSTEM_DIMENSIONS; i++) { - if (geo) - xstrfmtcat(geo, "x%c", - alpha_num[jobinfo->geometry[i]]); - else - xstrfmtcat(geo, "%c", - alpha_num[jobinfo->geometry[i]]); - } - } + } else + geo = give_geo((int *)jobinfo->geometry); switch (mode) { case SELECT_PRINT_HEAD: -- GitLab