diff --git a/src/plugins/select/bluegene/select_bluegene.c b/src/plugins/select/bluegene/select_bluegene.c index f2f84d9c902bef3df99f916380ea1fafd3773dfb..494d40de13c77ba09666839ea70d45a44a007d7c 100644 --- a/src/plugins/select/bluegene/select_bluegene.c +++ b/src/plugins/select/bluegene/select_bluegene.c @@ -2810,9 +2810,22 @@ extern int select_p_alter_node_cnt(enum select_node_cnt type, void *data) set min_nodes correctly */ if ((job_desc->min_cpus != NO_VAL) - && (job_desc->min_cpus > job_desc->min_nodes)) - job_desc->min_nodes = - job_desc->min_cpus / bg_conf->cpu_ratio; + && (job_desc->min_cpus > job_desc->min_nodes)) { + float tmp_float = (float)job_desc->min_cpus + / (float)bg_conf->cpu_ratio; + tmp = (uint32_t)tmp_float; + if (tmp_float != (float)tmp) + tmp++; + + if ((job_desc->min_nodes > 1) + && (tmp != job_desc->min_nodes)) + error("Asking for more resources than " + "possible. Requested %u nodes and %u " + "tasks, giving them %u nodes.", + job_desc->min_nodes, + job_desc->min_cpus, tmp); + job_desc->min_nodes = tmp; + } /* initialize min_cpus to the min_nodes */ job_desc->min_cpus = job_desc->min_nodes * bg_conf->cpu_ratio; @@ -2883,7 +2896,6 @@ extern int select_p_alter_node_cnt(enum select_node_cnt type, void *data) set_select_jobinfo(job_desc->select_jobinfo->data, SELECT_JOBDATA_NODE_CNT, &job_desc->min_nodes); - job_desc->min_cpus = job_desc->min_nodes * bg_conf->cpu_ratio; job_desc->min_nodes = 1;