From a85b2225b74118f54b3266b309b01a72db424640 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@schedmd.com>
Date: Mon, 28 Nov 2011 15:43:46 -0800
Subject: [PATCH] BGQ - fixed issue where a user requests a node count and a
 task count that doesn't fill up all the cpus on the nodes requested.

---
 src/plugins/select/bluegene/select_bluegene.c | 20 +++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/plugins/select/bluegene/select_bluegene.c b/src/plugins/select/bluegene/select_bluegene.c
index f2f84d9c902..494d40de13c 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;
-- 
GitLab