From 0b3b0caf5d855e47b12b12ed61fd83c4379302eb Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Wed, 26 Feb 2014 16:38:50 -0800
Subject: [PATCH] Fix core_spec support with Shared=yes partition

If a partition was configured with Shared=yes, then submitting a
job with --core-spec option failed to allocate the node exclusively
to that job.
---
 src/slurmctld/job_mgr.c        | 5 ++++-
 src/slurmctld/node_scheduler.c | 3 ++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 8124b6c3467..c42d806cf5a 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 5c5a74d9c8c..fe2cfc7dbb7 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 {
-- 
GitLab