diff --git a/NEWS b/NEWS index 6d6904ea6f821f4b754bff5efd939acb0aede21d..e2857d87f628b0df7636923d8bc8344cc6502bdb 100644 --- a/NEWS +++ b/NEWS @@ -155,6 +155,8 @@ documents those changes that are of interest to users and admins. -- Remove --program-prefix from spec file since it appears to be added by default and appeared to break other things. -- Updated the automake min version in autogen.sh to be correct. + -- Select/cons_res - Correct total CPU count allocated to a job with + --exclusive and --cpus-per-task options * Changes in Slurm 2.5.7 ======================== diff --git a/src/plugins/select/cons_res/job_test.c b/src/plugins/select/cons_res/job_test.c index 8fb879b51ced4d722c470125791470be2be2d7dc..9f9318ad7f09705793f1a84639088a38616e86ec 100644 --- a/src/plugins/select/cons_res/job_test.c +++ b/src/plugins/select/cons_res/job_test.c @@ -411,7 +411,7 @@ uint16_t _allocate_cores(struct job_record *job_ptr, bitstr_t *core_map, bitstr_t *part_core_map, const uint32_t node_i, bool cpu_type) { - uint16_t avail_cpus = 0, num_tasks = 0; + uint16_t avail_cpus = 0, num_tasks = 0, total_cpus = 0; uint32_t core_begin = cr_get_coremap_offset(node_i); uint32_t core_end = cr_get_coremap_offset(node_i+1); uint32_t c; @@ -559,6 +559,7 @@ uint16_t _allocate_cores(struct job_record *job_ptr, bitstr_t *core_map, /* convert from PER_CORE to TOTAL_FOR_NODE */ avail_cpus *= free_core_count; + total_cpus = avail_cpus; num_tasks *= free_core_count; /* If job requested exclusive rights to the node don't do the min here @@ -604,10 +605,11 @@ uint16_t _allocate_cores(struct job_record *job_ptr, bitstr_t *core_map, bit_nclear(core_map, c, core_end-1); fini: - if (!num_tasks) { + if (!num_tasks) bit_nclear(core_map, core_begin, core_end-1); - } xfree(free_cores); + if ((job_ptr->details->shared == 0) && num_tasks) + return total_cpus; return num_tasks * cpus_per_task; }