diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 8124b6c3467446995c7356365e83644117a82c72..c42d806cf5a9057209deae9cb760ebcc0988999e 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -5520,8 +5520,11 @@ _copy_job_desc_to_job_record(job_desc_msg_t * job_desc,
 	}
 	if (job_desc->contiguous != (uint16_t) NO_VAL)
 		detail_ptr->contiguous = job_desc->contiguous;
-	if (job_desc->core_spec != (uint16_t) NO_VAL)
+	if (job_desc->core_spec != (uint16_t) NO_VAL) {
 		detail_ptr->core_spec = job_desc->core_spec;
+		if (job_desc->core_spec)
+			detail_ptr->whole_node = 1;
+	}
 	if (job_desc->task_dist != (uint16_t) NO_VAL)
 		detail_ptr->task_dist = job_desc->task_dist;
 	if (job_desc->cpus_per_task != (uint16_t) NO_VAL)
diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c
index 5c5a74d9c8c8d62aa193d580c8b60bf3f5a09b45..fe2cfc7dbb72fab77a5d57f6b8819f39b969f008 100644
--- a/src/slurmctld/node_scheduler.c
+++ b/src/slurmctld/node_scheduler.c
@@ -695,7 +695,8 @@ _resolve_shared_status(struct job_record *job_ptr, uint16_t part_max_share,
 		return 1;
 
 	if (cons_res_flag) {
-		if (job_ptr->details->share_res == 0)
+		if ((job_ptr->details->share_res  != 1) ||    /* 0 or NO_VAL */
+		    (job_ptr->details->whole_node == 1))
 			return 0;
 		return 1;
 	} else {