From 9603a226abf7df2b896c31143ca630b38855c277 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Mon, 14 Dec 2009 18:30:23 +0000
Subject: [PATCH] fix undercount issue for bluegene systems

---
 src/slurmctld/job_mgr.c   | 10 ++++++++--
 src/slurmctld/slurmctld.h |  3 ++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 73f82ec3b9d..5461d6b969e 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -3829,7 +3829,11 @@ extern int job_update_cpu_cnt(struct job_record *job_ptr, int node_inx)
 {
 	uint16_t cpu_cnt=0, i=0;
 	int curr_node_inx;
-
+#ifdef HAVE_BG
+	/* This function doesn't apply to a bluegene system since the
+	   cpu count isn't set up on that system. */
+	return SLURM_SUCCESS;
+#endif
 	xassert(job_ptr);
 	if(!job_ptr->job_resrcs || !job_ptr->job_resrcs->node_bitmap) {
 		error("job_update_cpu_cnt: "
@@ -3849,6 +3853,7 @@ extern int job_update_cpu_cnt(struct job_record *job_ptr, int node_inx)
 				break;
 			curr_node_inx += job_ptr->job_resrcs->cpu_array_reps[i];
 		}
+		/* info("removing %u from %u", cpu_cnt, job_ptr->cpu_cnt); */
 		job_ptr->cpu_cnt -= cpu_cnt;
 		if((int)job_ptr->cpu_cnt < 0) {
 			error("job_update_cpu_cnt: "
@@ -4306,7 +4311,8 @@ void pack_job(struct job_record *dump_job_ptr, uint16_t show_flags, Buf buffer)
 	packstr(dump_job_ptr->wckey, buffer);
 	packstr(dump_job_ptr->alloc_node, buffer);
 	pack_bit_fmt(dump_job_ptr->node_bitmap, buffer);
-	if (IS_JOB_COMPLETING(dump_job_ptr))
+
+	if (IS_JOB_COMPLETING(dump_job_ptr) && dump_job_ptr->cpu_cnt)
 		pack32(dump_job_ptr->cpu_cnt, buffer);
 	else if (dump_job_ptr->total_procs)
 		pack32(dump_job_ptr->total_procs, buffer);
diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h
index 117cf5bf993..e2576439984 100644
--- a/src/slurmctld/slurmctld.h
+++ b/src/slurmctld/slurmctld.h
@@ -379,7 +379,8 @@ struct job_record {
 					 * checkpointed */
 	char *comment;			/* arbitrary comment */
 	uint32_t cpu_cnt;		/* current count of cpus held
-					 * by the job */
+					 * by the job (N/A for
+					 * bluegene systems) */
 	uint16_t cr_enabled;            /* specify if if Consumable Resources
                                          * is enabled. Needed since CR deals
                                          * with a finer granularity in its
-- 
GitLab