Skip to content
Snippets Groups Projects
Commit 873c8eb1 authored by Moe Jette's avatar Moe Jette
Browse files
parent 16362a7f
No related branches found
No related tags found
No related merge requests found
...@@ -178,6 +178,8 @@ documents those changes that are of interest to users and admins. ...@@ -178,6 +178,8 @@ documents those changes that are of interest to users and admins.
-- Fix bug in logic to remove a job's dependency, could result in abort. -- Fix bug in logic to remove a job's dependency, could result in abort.
-- Add new error message to sched/wiki and sched/wiki2 (Maui and Moab) for -- Add new error message to sched/wiki and sched/wiki2 (Maui and Moab) for
STARTJOB request: "TASKLIST includes non-responsive nodes". STARTJOB request: "TASKLIST includes non-responsive nodes".
-- Fix bug in select/linear when used with sched/gang that can result in a
job's required or excluded node specification being ignored.
* Changes in SLURM 1.3.13 * Changes in SLURM 1.3.13
========================= =========================
......
...@@ -815,21 +815,34 @@ static int _find_job_mate(struct job_record *job_ptr, bitstr_t *bitmap, ...@@ -815,21 +815,34 @@ static int _find_job_mate(struct job_record *job_ptr, bitstr_t *bitmap,
{ {
ListIterator job_iterator; ListIterator job_iterator;
struct job_record *job_scan_ptr; struct job_record *job_scan_ptr;
int rc = EINVAL;
job_iterator = list_iterator_create(job_list); job_iterator = list_iterator_create(job_list);
while ((job_scan_ptr = (struct job_record *) list_next(job_iterator))) { while ((job_scan_ptr = (struct job_record *) list_next(job_iterator))) {
if ((job_scan_ptr->part_ptr == job_ptr->part_ptr) && if ((job_scan_ptr->part_ptr != job_ptr->part_ptr) ||
(job_scan_ptr->job_state == JOB_RUNNING) && (job_scan_ptr->job_state != JOB_RUNNING) ||
(job_scan_ptr->node_cnt == req_nodes) && (job_scan_ptr->node_cnt != req_nodes) ||
(job_scan_ptr->total_procs >= job_ptr->num_procs) && (job_scan_ptr->total_procs < job_ptr->num_procs) ||
bit_super_set(job_scan_ptr->node_bitmap, bitmap)) { (!bit_super_set(job_scan_ptr->node_bitmap, bitmap)))
bit_and(bitmap, job_scan_ptr->node_bitmap); continue;
job_ptr->total_procs = job_scan_ptr->total_procs;
return SLURM_SUCCESS; if (job_ptr->details->req_node_bitmap &&
} (!bit_super_set(job_ptr->details->req_node_bitmap,
job_scan_ptr->node_bitmap)))
continue; /* Required nodes missing from job */
if (job_ptr->details->exc_node_bitmap &&
(bit_overlap(job_ptr->details->exc_node_bitmap,
job_scan_ptr->node_bitmap) != 0))
continue; /* Excluded nodes in this job */
bit_and(bitmap, job_scan_ptr->node_bitmap);
job_ptr->total_procs = job_scan_ptr->total_procs;
rc = SLURM_SUCCESS;
break;
} }
list_iterator_destroy(job_iterator); list_iterator_destroy(job_iterator);
return EINVAL; return rc;
} }
/* _job_test - does most of the real work for select_p_job_test(), which /* _job_test - does most of the real work for select_p_job_test(), which
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment