--- /app/slurm/wjb/B_2-3-1_T/src/slurmctld/job_scheduler.c.orig	2011-11-16 13:50:44.000000000 -0700
+++ /app/slurm/wjb/B_2-3-1_T/src/slurmctld/job_scheduler.c	2011-11-16 12:16:39.000000000 -0700
@@ -333,6 +333,7 @@
 	uint32_t job_depth = 0;
 	job_queue_rec_t *job_queue_rec;
 	struct job_record *job_ptr;
+	slurmdb_qos_rec_t *qos_ptr;
 	struct part_record *part_ptr, **failed_parts = NULL;
 	bitstr_t *save_avail_node_bitmap;
 	/* Locks: Read config, write job, write node, read partition */
@@ -452,7 +453,9 @@
 		}
 
 		/* If a patition update has occurred, then do a limit check. */
-		if (save_last_part_update != last_part_update) {
+		qos_ptr = job_ptr->qos_ptr;
+		if ((save_last_part_update == last_part_update) ||
+			(qos_ptr && (qos_ptr->flags & QOS_FLAG_PART_MAX_NODE))) {
 			int fail_reason = job_limits_check(&job_ptr);
 			if (fail_reason != WAIT_NO_REASON) {
 				job_ptr->state_reason = fail_reason;
