diff --git a/doc/man/man1/sreport.1 b/doc/man/man1/sreport.1 index f8ae3dacae0f56884271d2c581ad0bc723811150..60712c10fb12b7fe922c4844019dbbdd19918646 100644 --- a/doc/man/man1/sreport.1 +++ b/doc/man/man1/sreport.1 @@ -285,6 +285,7 @@ List of users jobs to include in report. Default is all. .RE .TP + .SH "Format Options for Each Report" \fBCluster\fP @@ -306,7 +307,7 @@ List of users jobs to include in report. Default is all. TopUsage - Account, Cluster, Login, Proper, Used -.TP +.TP All commands and options are case-insensitive. .TP diff --git a/src/plugins/select/bluegene/plugin/bg_record_functions.c b/src/plugins/select/bluegene/plugin/bg_record_functions.c index 796535d2ffc2241e60e1fde777e983d2d9fedb26..aa25e3acd4756cd283c6ada87eb98d9065f347e0 100644 --- a/src/plugins/select/bluegene/plugin/bg_record_functions.c +++ b/src/plugins/select/bluegene/plugin/bg_record_functions.c @@ -298,12 +298,19 @@ extern void process_nodes(bg_record_t *bg_record, bool startup) alpha_num[bg_record->geo[Y]], alpha_num[bg_record->geo[Z]], bg_record->bp_count); - - if ((bg_record->geo[X] == DIM_SIZE[X]) - && (bg_record->geo[Y] == DIM_SIZE[Y]) - && (bg_record->geo[Z] == DIM_SIZE[Z])) { - bg_record->full_block = 1; - } + /* This check is for sub midplane systems to figure out what + the largest block can be. + */ + if((DIM_SIZE[X] > 1) || (DIM_SIZE[Y] > 1) || (DIM_SIZE[Z] > 1)) { + /* means we have more than 1 base partition */ + if ((bg_record->geo[X] == DIM_SIZE[X]) + && (bg_record->geo[Y] == DIM_SIZE[Y]) + && (bg_record->geo[Z] == DIM_SIZE[Z])) { + bg_record->full_block = 1; + } + } else if(bg_record->node_cnt == bluegene_bp_node_cnt) + bg_record->full_block = 1; + /* #ifndef HAVE_BG_FILES */ /* max_dim[X] = MAX(max_dim[X], end[X]); */ diff --git a/src/plugins/select/bluegene/plugin/block_sys.c b/src/plugins/select/bluegene/plugin/block_sys.c index 1db8077d6950b3b6a771e9d85eb8ee47f4047861..0a27b03dfb37435a0719ab8405d8e27d878bf6ed 100755 --- a/src/plugins/select/bluegene/plugin/block_sys.c +++ b/src/plugins/select/bluegene/plugin/block_sys.c @@ -803,7 +803,10 @@ int read_bg_blocks() bg_record->state); process_nodes(bg_record, false); - + + /* We can stop processing information now since we + don't need to rest of the information to decide if + this is the correct block. */ if(bluegene_layout_mode == LAYOUT_DYNAMIC) { bg_record_t *tmp_record = xmalloc(sizeof(bg_record_t)); copy_bg_record(bg_record, tmp_record); diff --git a/src/plugins/select/bluegene/plugin/bluegene.c b/src/plugins/select/bluegene/plugin/bluegene.c index d0cd8db0d17fc8b66849bcef667fe219c4f5c1fb..33176a5de00cbd193b8745f2b72bc233b11c2154 100644 --- a/src/plugins/select/bluegene/plugin/bluegene.c +++ b/src/plugins/select/bluegene/plugin/bluegene.c @@ -1449,7 +1449,6 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir) int rc = SLURM_ERROR; bg_record_t* bg_record = NULL; bg_record_t* init_bg_record = NULL; - bg_record_t* full_system_bg_record = NULL; int full_created = 0; ListIterator itr_conf; ListIterator itr_curr; @@ -1473,23 +1472,15 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir) if(!bg_curr_block_list) return SLURM_ERROR; - - itr_curr = list_iterator_create(bg_curr_block_list); - while ((init_bg_record = list_next(itr_curr))) - if(init_bg_record->full_block) - full_system_bg_record = init_bg_record; if(!*bg_found_block_list) (*bg_found_block_list) = list_create(NULL); - + + itr_curr = list_iterator_create(bg_curr_block_list); itr_conf = list_iterator_create(bg_list); while ((bg_record = (bg_record_t*) list_next(itr_conf))) { - /* translate hostlist to ranged - string for consistent format - search here - */ list_iterator_reset(itr_curr); - while ((init_bg_record = list_next(itr_curr))) { + while ((init_bg_record = list_next(itr_curr))) { if (strcasecmp(bg_record->nodes, init_bg_record->nodes)) continue; /* wrong nodes */ @@ -1526,6 +1517,10 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir) continue; copy_bg_record(init_bg_record, bg_record); + /* remove from the curr list since we just + matched it no reason to keep it around + anymore */ + list_delete_item(itr_curr); break; } @@ -1554,30 +1549,39 @@ static int _validate_config_nodes(List *bg_found_block_list, char *dir) list_push(bg_booted_block_list, bg_record); } } - list_iterator_destroy(itr_conf); - list_iterator_destroy(itr_curr); if(bluegene_layout_mode == LAYOUT_DYNAMIC) goto finished; - if(!full_created && full_system_bg_record) { - bg_record = xmalloc(sizeof(bg_record_t)); - copy_bg_record(full_system_bg_record, bg_record); - list_append(bg_list, bg_record); - list_push(*bg_found_block_list, bg_record); - format_node_name(bg_record, tmp_char, sizeof(tmp_char)); - info("Existing: BlockID:%s Nodes:%s Conn:%s", - bg_record->bg_block_id, - tmp_char, - convert_conn_type(bg_record->conn_type)); - if(((bg_record->state == RM_PARTITION_READY) - || (bg_record->state == RM_PARTITION_CONFIGURING)) - && !block_exist_in_list(bg_booted_block_list, - bg_record)) - list_push(bg_booted_block_list, bg_record); + if(!full_created) { + list_iterator_reset(itr_curr); + while ((init_bg_record = list_next(itr_curr))) { + if(init_bg_record->full_block) { + list_remove(itr_curr); + bg_record = init_bg_record; + list_append(bg_list, bg_record); + list_push(*bg_found_block_list, bg_record); + format_node_name(bg_record, tmp_char, + sizeof(tmp_char)); + info("Existing: BlockID:%s Nodes:%s Conn:%s", + bg_record->bg_block_id, + tmp_char, + convert_conn_type(bg_record->conn_type)); + if(((bg_record->state == RM_PARTITION_READY) + || (bg_record->state + == RM_PARTITION_CONFIGURING)) + && !block_exist_in_list( + bg_booted_block_list, bg_record)) + list_push(bg_booted_block_list, + bg_record); + break; + } + } } finished: - if(list_count(bg_list) == list_count(bg_curr_block_list)) + list_iterator_destroy(itr_conf); + list_iterator_destroy(itr_curr); + if(!list_count(bg_curr_block_list)) rc = SLURM_SUCCESS; return rc; diff --git a/src/plugins/select/bluegene/plugin/select_bluegene.c b/src/plugins/select/bluegene/plugin/select_bluegene.c index bc8766d03a1375e6e171acfa5e346c12292e2ff4..abe836f21c7f308ab7e1e59bfa844e3b6a0c7f69 100644 --- a/src/plugins/select/bluegene/plugin/select_bluegene.c +++ b/src/plugins/select/bluegene/plugin/select_bluegene.c @@ -369,7 +369,7 @@ extern int select_p_job_init(List job_list) extern int select_p_node_init(struct node_record *node_ptr, int node_cnt) { if(node_cnt>0) - if(node_ptr->cpus > 512) + if(node_ptr->cpus >= bluegene_bp_node_cnt) procs_per_node = node_ptr->cpus; return SLURM_SUCCESS; } diff --git a/src/sreport/sreport.c b/src/sreport/sreport.c index 08b7857835b9cd1513335a7672149cd9646169b4..19f0c754381d1cd1e45d335b9e23140e635aac19 100644 --- a/src/sreport/sreport.c +++ b/src/sreport/sreport.c @@ -655,8 +655,6 @@ sreport [<OPTION>] [<COMMAND>] \n\ displayed, not the accounts specified. \n\ In the Sizes reports the default for \n\ accounts is root. \n\ - - Clusters=<OPT> - List of clusters to include in report. \n\ - Default is local cluster. \n\ - GID=<OPT> - List of group ids to include in report. \n\ Default is all. \n\ - Grouping=<OPT> - Comma separated list of size groupings. \n\ @@ -673,8 +671,6 @@ sreport [<OPTION>] [<COMMAND>] \n\ \n\ user - Accounts=<OPT> - List of accounts to use for the report \n\ Default is all. \n\ - - Clusters=<OPT> - List of clusters to include in report. \n\ - Default is local cluster. \n\ - Group - Group all accounts together for each user.\n\ Default is a separate entry for each user\n\ and account reference. \n\