Thanks Don, this will be in the next release.

https://github.com/SchedMD/slurm/commit/f7b73f3531fdbd918199d22f8a4b2403080b8048

Danny

On Monday August 22 2011 1:54:33 PM you wrote:
> The following patch fixes a problem with _job_create() when not using qos's.  
> It makes _job_create() consistent with 
similar logic in select_nodes().
> 
> diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
> index 8f245cc..75610ea 100644
> --- a/src/slurmctld/job_mgr.c
> +++ b/src/slurmctld/job_mgr.c
> @@ -3937,7 +3937,8 @@ static int _job_create(job_desc_msg_t * job_desc, int 
> allocate, int will_run,
>         detail_ptr = job_ptr->details;
>         fail_reason= WAIT_NO_REASON;
>         if ((job_desc->min_nodes > part_ptr->max_nodes) &&
> -           (qos_ptr && !(qos_ptr->flags & QOS_FLAG_PART_MAX_NODE))) {
> +           (!qos_ptr || (qos_ptr && !(qos_ptr->flags &
> +                                      QOS_FLAG_PART_MAX_NODE)))) {
>                 info("Job %u requested too many nodes (%u) of "
>                      "partition %s(MaxNodes %u)",
>                      job_ptr->job_id, job_desc->min_nodes,
> @@ -3945,7 +3946,8 @@ static int _job_create(job_desc_msg_t * job_desc, int 
> allocate, int will_run,
>                 fail_reason = WAIT_PART_NODE_LIMIT;
>         } else if ((job_desc->max_nodes != 0) &&    /* no max_nodes for job */
>                    ((job_desc->max_nodes < part_ptr->min_nodes) &&
> -                   (qos_ptr && !(qos_ptr->flags & QOS_FLAG_PART_MIN_NODE)))) 
> {
> +                   (!qos_ptr || (qos_ptr && !(qos_ptr->flags &
> +                                              QOS_FLAG_PART_MIN_NODE))))) {
>                 info("Job %u requested too few nodes (%u) of "
>                      "partition %s(MinNodes %u)",
>                      job_ptr->job_id, job_desc->max_nodes,
> @@ -3961,8 +3963,8 @@ static int _job_create(job_desc_msg_t * job_desc, int 
> allocate, int will_run,
>                 fail_reason = WAIT_PART_INACTIVE;
>         } else if ((job_ptr->time_limit != NO_VAL) &&
>                    ((job_ptr->time_limit > part_ptr->max_time) &&
> -                   (qos_ptr &&
> -                    !(qos_ptr->flags & QOS_FLAG_PART_TIME_LIMIT)))) {
> +                   (!qos_ptr || (qos_ptr && !(qos_ptr->flags &
> +                                              QOS_FLAG_PART_TIME_LIMIT))))) {
>                 info("Job %u exceeds partition time limit", job_ptr->job_id);
>                 fail_reason = WAIT_PART_TIME_LIMIT;
>         } else if (qos_ptr && assoc_ptr &&
> 

Reply via email to