From a5431885e841f0a933f1e47653c2cf7e4e820f10 Mon Sep 17 00:00:00 2001
From: Mark Nelson <mdnelson8@gmail.com>
Date: Wed, 27 Jun 2012 08:15:01 -0700
Subject: [PATCH] Fix for setting reason field for user/system hold

---
 src/slurmctld/job_mgr.c        |  2 --
 src/slurmctld/node_scheduler.c | 15 ++++++++-------
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 363f93b72c5..2cbe0c1337d 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -3822,8 +3822,6 @@ extern int job_limits_check(struct job_record **job_pptr)
 			       job_ptr->job_id);
 			fail_reason = WAIT_QOS_THRES;
 		}
-	} else if (job_ptr->priority == 0) {   /* user or administrator hold */
-		fail_reason = WAIT_HELD;
 	}
 
 	return (fail_reason);
diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c
index 5a49059d152..24379126e1d 100644
--- a/src/slurmctld/node_scheduler.c
+++ b/src/slurmctld/node_scheduler.c
@@ -1241,18 +1241,19 @@ extern int select_nodes(struct job_record *job_ptr, bool test_only,
 		      job_ptr->job_id, job_ptr->partition);
 	}
 
+	if (job_ptr->priority == 0) {	/* user/admin hold */
+		if ((job_ptr->state_reason != WAIT_HELD) &&
+		    (job_ptr->state_reason != WAIT_HELD_USER)) {
+			job_ptr->state_reason = WAIT_HELD;
+		}
+		return ESLURM_JOB_HELD;
+	}
+
 	/* Confirm that partition is up and has compatible nodes limits */
 	fail_reason = job_limits_check(&job_ptr);
 	if (fail_reason != WAIT_NO_REASON) {
 		last_job_update = now;
 		xfree(job_ptr->state_desc);
-		if (job_ptr->priority == 0) {	/* user/admin hold */
-			if ((job_ptr->state_reason != WAIT_HELD) &&
-			    (job_ptr->state_reason != WAIT_HELD_USER)) {
-				job_ptr->state_reason = WAIT_HELD;
-			}
-			return ESLURM_JOB_HELD;
-		}
 		job_ptr->state_reason = fail_reason;
 		return ESLURM_REQUESTED_PART_CONFIG_UNAVAILABLE;
 	}
-- 
GitLab