diff --git a/NEWS b/NEWS
index 201d7376544bf39cd98a7b34e1f94b4f3b89e1f7..a383bc966a32a179d63aad584f718dd8c0f6d57e 100644
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,7 @@ documents those changes that are of interest to users and administrators.
  -- Make it so --mail-type=NONE didn't throw an invalid error.
  -- If no default account is given for a user when creating (only a list of
     accounts) no default account is printed, previously NULL was printed.
+ -- Fix for tracking a node's allocated CPUs with gang scheduling.
 
 * Changes in Slurm 15.08.11
 ===========================
diff --git a/src/plugins/select/cons_res/select_cons_res.c b/src/plugins/select/cons_res/select_cons_res.c
index 3c8714acad174db486a0ca9e8ab9425428570066..89aca1ab0e468f4a9fce7d06b3018bcd3e1de685 100644
--- a/src/plugins/select/cons_res/select_cons_res.c
+++ b/src/plugins/select/cons_res/select_cons_res.c
@@ -2535,9 +2535,12 @@ extern int select_p_select_nodeinfo_set(struct job_record *job_ptr)
 
 	if (IS_JOB_RUNNING(job_ptr))
 		rc = _add_job_to_res(job_ptr, 0);
-	else if (IS_JOB_SUSPENDED(job_ptr))
-		rc = _add_job_to_res(job_ptr, 1);
-	else
+	else if (IS_JOB_SUSPENDED(job_ptr)) {
+		if (job_ptr->priority == 0)
+			rc = _add_job_to_res(job_ptr, 1);
+		else	/* Gang schedule suspend */
+			rc = _add_job_to_res(job_ptr, 0);
+	} else
 		return SLURM_SUCCESS;
 	gres_plugin_job_state_log(job_ptr->gres_list, job_ptr->job_id);
 
@@ -2743,7 +2746,10 @@ extern int select_p_reconfigure(void)
 			_add_job_to_res(job_ptr, 0);
 		} else if (IS_JOB_SUSPENDED(job_ptr)) {
 			/* add the job in a suspended state */
-			_add_job_to_res(job_ptr, 1);
+			if (job_ptr->priority == 0)
+				rc = _add_job_to_res(job_ptr, 1);
+			else	/* Gang schedule suspend */
+				rc = _add_job_to_res(job_ptr, 0);
 		} else if (_job_cleaning(job_ptr)) {
 			cleaning_job_cnt++;
 			run_time = (int) difftime(now, job_ptr->end_time);