diff --git a/doc/man/man1/sacct.1 b/doc/man/man1/sacct.1 index 6ff80c535b7adcda5ddaaad5d9e9e41276c065c1..505e44cce1aa16b3c5d69868db66a3beef9329f8 100644 --- a/doc/man/man1/sacct.1 +++ b/doc/man/man1/sacct.1 @@ -49,12 +49,12 @@ gather and report incomplete information for these calls; \f2getrusage(3)\fP man page for information about which data are actually available on your system. .IP -If --dump is specified, the field selection options (--brief, ---fields, ...) have no effect. +If \-\-dump is specified, the field selection options (\-\-brief, +\-\-format, ...) have no effect. .IP Elapsed time fields are presented as 2 fields, integral seconds and integral microseconds .IP -If --dump is not specified, elapsed time fields are presented as +If \-\-dump is not specified, elapsed time fields are presented as [[days-]hours:]minutes:seconds.hundredths. .IP The default input file is the file named in the jobacct_logfile @@ -118,21 +118,15 @@ data output when this option is used. .TP \f3\-\-duplicates\fP If SLURM job ids are reset, but the job accounting log file isn't -reset at the same time (with -e, for example), some job numbers will +reset at the same time (with \-e, for example), some job numbers will probably appear more than once in the accounting log file to refer to different jobs; such jobs can be distinguished by the "submit" time stamp in the data records. .IP -When data for specific jobs are requested with the --jobs option, we +When data for specific jobs are requested with the \-\-jobs option, we assume that the user wants to see only the most recent job with that -number. This behavior can be overridden by specifying --duplicates, in +number. This behavior can be overridden by specifying \-\-duplicates, in which case all records that match the selection criteria will be returned. -.IP -When --jobs is not specified, we report data for all jobs that match -the selection criteria, even if some of the job numbers are -reused. Specify that you only want the most recent job for each -selected job number with the --noduplicates option. - .TP \f3\-e \fP\f3,\fP \f3\-\-helpformat\fP diff --git a/src/plugins/select/bluegene/plugin/bg_record_functions.c b/src/plugins/select/bluegene/plugin/bg_record_functions.c index e23e675fa94d6878f0cafec7dd8cfc2477290f50..68e0147659278ef5e957fa18d499a9967402a615 100644 --- a/src/plugins/select/bluegene/plugin/bg_record_functions.c +++ b/src/plugins/select/bluegene/plugin/bg_record_functions.c @@ -990,6 +990,7 @@ extern int down_nodecard(char *bp_name, bitoff_t io_start) /* Translate 1 nodecard count to ionode count */ if((io_cnt *= bluegene_io_ratio)) io_cnt--; + /* make sure we create something that is able to be created */ if(bluegene_smallest_block < bluegene_nodecard_node_cnt) @@ -1004,6 +1005,16 @@ extern int down_nodecard(char *bp_name, bitoff_t io_start) bp_name); return EINVAL; } + + /* this is here for sanity check to make sure we don't core on + these bits when we set them below. */ + if(io_start >= bluegene_numpsets + || (io_start+io_cnt) >= bluegene_numpsets) { + debug("io %d-%d not configured on this " + "system, only %d ionodes per midplane", + io_start, io_start+io_cnt, bluegene_numpsets); + return EINVAL; + } bp_bit = (node_ptr - node_record_table_ptr); memset(&blockreq, 0, sizeof(blockreq_t)); diff --git a/src/plugins/select/bluegene/plugin/state_test.c b/src/plugins/select/bluegene/plugin/state_test.c index 242982838e6ca8087e26e3901c34350bce0fb06c..c49d1c400999b386db47697731549cc93ed082b9 100644 --- a/src/plugins/select/bluegene/plugin/state_test.c +++ b/src/plugins/select/bluegene/plugin/state_test.c @@ -183,7 +183,16 @@ static int _test_down_nodecards(rm_BP_t *bp_ptr) rc = SLURM_ERROR; goto clean_up; } - + + /* make sure we have this midplane in the system */ + if(coord[X] >= DIM_SIZE[X] + || coord[Y] >= DIM_SIZE[Y] + || coord[Z] >= DIM_SIZE[Z]) { + debug4("node %s isn't configured", bp_id); + rc = SLURM_SUCCESS; + goto clean_up; + } + node_name = xstrdup_printf("%s%c%c%c", bg_slurm_node_prefix, alpha_num[coord[X]], @@ -263,11 +272,28 @@ static int _test_down_nodecards(rm_BP_t *bp_ptr) io_start = atoi((char*)nc_name+1); io_start *= bluegene_io_ratio; #endif - + /* On small systems with less than a midplane the + database may see the nodecards there but in missing + state. To avoid getting a bunch of warnings here just + skip over the ones missing. + */ + if(io_start >= bluegene_numpsets) { + if(state == RM_NODECARD_MISSING) { + debug3("Nodecard %s is missing continue", + nc_name); + } else { + error("We don't have the system configured " + "for this nodecard %s, we only have " + "%d ionodes and this starts at %d", + nc_name, io_start, bluegene_numpsets); + } + free(nc_name); + continue; + } /* if(!ionode_bitmap) */ /* ionode_bitmap = bit_alloc(bluegene_numpsets); */ -/* info("setting %d-%d of %d", */ -/* io_start, io_start+io_cnt, bluegene_numpsets); */ +/* info("setting %s start %d of %d", */ +/* nc_name, io_start, bluegene_numpsets); */ /* bit_nset(ionode_bitmap, io_start, io_start+io_cnt); */ /* we have to handle each nodecard separately to make sure we don't create holes in the system */