diff --git a/NEWS b/NEWS index e8e9f4ee87e1b00843e3677e6e9a9e29804d7ff3..f243eb6e9ce7d9b1884656000e55c7f07871d19f 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,7 @@ documents those changes that are of interest to users and admins. (e.g. Blue Gene) -- Fix srun bug when --input, --output and --error are all "none" -- Don't schedule jobs for user root if partition is DOWN + -- Modify select/bluegene to honor job's required node list * Changes in SLURM 0.4.0-pre3 ============================= diff --git a/src/plugins/select/bluegene/bluegene.c b/src/plugins/select/bluegene/bluegene.c index 23ecff3feaff18d42e7766f191f796bc4fa6af2f..dc3e3e4c761c5495ef47b3a607c82eeaffc3e3d4 100644 --- a/src/plugins/select/bluegene/bluegene.c +++ b/src/plugins/select/bluegene/bluegene.c @@ -56,9 +56,10 @@ _STMT_START { \ /** some local functions */ static int _copy_slurm_partition_list(List slurm_part_list); -static int _find_best_partition_match(struct job_record* job_ptr, bitstr_t* slurm_part_bitmap, - int min_nodes, int max_nodes, - int spec, bgl_record_t** found_bgl_record); +static int _find_best_partition_match(struct job_record* job_ptr, + bitstr_t* slurm_part_bitmap, + int min_nodes, int max_nodes, + int spec, bgl_record_t** found_bgl_record); static int _parse_request(char* request_string, partition_t** request); static int _wire_bgl_partitions(void); static int _bgl_record_cmpf_inc(bgl_record_t* rec_a, bgl_record_t* rec_b); @@ -698,7 +699,18 @@ static int _find_best_partition_match(struct job_record* job_ptr, * SLURM partition not available to this job. */ if (!bit_super_set(record->bitmap, slurm_part_bitmap)) { - debug("bgl partition %s has nodes not usable by this job", + debug("bgl partition %s has nodes not usable by this " + "job", record->nodes); + continue; + } + + /* + * Insure that any required nodes are in this BGL partition + */ + if (job_ptr->details->req_node_bitmap + && (!bit_super_set(job_ptr->details->req_node_bitmap, + record->bitmap))) { + info("bgl partition %s lacks required nodes", record->nodes); continue; }