From a3e74ef295ceb2ade23778597720ed6d6f402212 Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Fri, 28 Feb 2014 12:44:48 -0800
Subject: [PATCH] preempt/qos - preempt job order

The job preemption order was based upon the lowest 16 bits of a
QOS priority, but the field holds 32 bits. This uses a value of
0xffff if the QOS priority is higher.
---
 src/plugins/preempt/qos/preempt_qos.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/plugins/preempt/qos/preempt_qos.c b/src/plugins/preempt/qos/preempt_qos.c
index af01632b1c2..6057fd2bb86 100644
--- a/src/plugins/preempt/qos/preempt_qos.c
+++ b/src/plugins/preempt/qos/preempt_qos.c
@@ -153,9 +153,12 @@ static uint32_t _gen_job_prio(struct job_record *job_ptr)
 	uint32_t job_prio;
 	slurmdb_qos_rec_t *qos_ptr = job_ptr->qos_ptr;
 
-	if (qos_ptr)
-		job_prio = (qos_ptr->priority & 0xffff) << 16;
-	else
+	if (qos_ptr) {
+		if (qos_ptr->priority > 0xffff)
+			job_prio = 0xffff << 16;
+		else
+			job_prio = (qos_ptr->priority & 0xffff) << 16;
+	} else
 		job_prio = 0;
 
 	if (job_ptr->node_cnt >= 0xffff)
-- 
GitLab