diff --git a/src/plugins/select/linear/select_linear.c b/src/plugins/select/linear/select_linear.c
index da500e3a38612ccb35c768fbdcc22b1dc4c4f69b..5191cda6638241e0bb42df959d0174293fd9084d 100644
--- a/src/plugins/select/linear/select_linear.c
+++ b/src/plugins/select/linear/select_linear.c
@@ -668,7 +668,7 @@ static int _job_test(struct job_record *job_ptr, bitstr_t *bitmap,
 	int rem_cpus, rem_nodes;	/* remaining resources desired */
 	int best_fit_nodes, best_fit_cpus, best_fit_req;
 	int best_fit_location = 0, best_fit_sufficient;
-	int avail_cpus;
+	int avail_cpus, alloc_cpus = 0;
 
 	if ((job_ptr->details->req_node_bitmap) &&
 	    (!bit_super_set(job_ptr->details->req_node_bitmap, bitmap)))
@@ -707,7 +707,8 @@ static int _job_test(struct job_record *job_ptr, bitstr_t *bitmap,
 					/* first required node in set */
 					consec_req[consec_index] = index;
 				}
-				rem_cpus -= avail_cpus;
+				rem_cpus   -= avail_cpus;
+				alloc_cpus += avail_cpus;
 				rem_nodes--;
 				max_nodes--;
 			} else {	 /* node not required (yet) */
@@ -813,7 +814,8 @@ static int _job_test(struct job_record *job_ptr, bitstr_t *bitmap,
 				rem_nodes--;
 				max_nodes--;
 				avail_cpus = _get_avail_cpus(job_ptr, i);
-				rem_cpus -= avail_cpus;
+				rem_cpus   -= avail_cpus;
+				alloc_cpus += avail_cpus;
 			}
 			for (i = (best_fit_req - 1);
 			     i >= consec_start[best_fit_location]; i--) {
@@ -826,7 +828,8 @@ static int _job_test(struct job_record *job_ptr, bitstr_t *bitmap,
 				rem_nodes--;
 				max_nodes--;
 				avail_cpus = _get_avail_cpus(job_ptr, i);
-				rem_cpus -= avail_cpus;
+				rem_cpus   -= avail_cpus;
+				alloc_cpus += avail_cpus;
 			}
 		} else {
 			for (i = consec_start[best_fit_location];
@@ -840,7 +843,8 @@ static int _job_test(struct job_record *job_ptr, bitstr_t *bitmap,
 				rem_nodes--;
 				max_nodes--;
 				avail_cpus = _get_avail_cpus(job_ptr, i);
-				rem_cpus -= avail_cpus;
+				rem_cpus   -= avail_cpus;
+				alloc_cpus += avail_cpus;
 			}
 		}
 		if (job_ptr->details->contiguous || 
@@ -856,6 +860,10 @@ static int _job_test(struct job_record *job_ptr, bitstr_t *bitmap,
 	&&  _enough_nodes(0, rem_nodes, min_nodes, req_nodes)) {
 		error_code = SLURM_SUCCESS;
 	}
+	if (error_code == SLURM_SUCCESS) {
+		/* job's total_procs is needed for SELECT_MODE_WILL_RUN */
+		job_ptr->total_procs = alloc_cpus;
+	}
 
 	xfree(consec_cpus);
 	xfree(consec_nodes);