diff --git a/src/plugins/job_submit/lua/job_submit_lua.c b/src/plugins/job_submit/lua/job_submit_lua.c index 343e28c2f2dded01665b7000712df9c140b2b16e..b82ad78d37b2e27fada06a8d078b52ecf6a47eed 100644 --- a/src/plugins/job_submit/lua/job_submit_lua.c +++ b/src/plugins/job_submit/lua/job_submit_lua.c @@ -451,6 +451,17 @@ static int _get_job_req_field (lua_State *L) lua_pushstring (L, job_desc->work_dir); } else if (!strcmp(name, "wckey")) { lua_pushstring (L, job_desc->wckey); + } else if (!strcmp(name, "ntasks_per_core")) { + lua_pushnumber (L, job_desc->ntasks_per_core); + } else if (!strcmp(name, "boards_per_node")) { + lua_pushnumber (L, job_desc->boards_per_node); + } else if (!strcmp(name, "ntasks_per_board")) { + lua_pushnumber (L, job_desc->ntasks_per_board); + } else if (!strcmp(name, "ntasks_per_socket")) { + lua_pushnumber (L, job_desc->ntasks_per_socket); + } else if (!strcmp(name, "sockets_per_board")) { + lua_pushnumber (L, job_desc->sockets_per_board); + } else { lua_pushnil (L); } diff --git a/src/slurmctld/job_scheduler.c b/src/slurmctld/job_scheduler.c index f5837ce01f508b913cd701878cf805ea09d14f60..1916620e2380634bec55f50b29a7d4636109948d 100644 --- a/src/slurmctld/job_scheduler.c +++ b/src/slurmctld/job_scheduler.c @@ -641,6 +641,30 @@ send_reply: return pending_jobs; } +/* Return true of all partitions have the same priority, otherwise false. */ +static bool _all_partition_priorities_same(void) +{ + struct part_record *part_ptr; + ListIterator iter; + bool part_priority_set = false; + uint32_t part_priority = 0; + bool result = true; + + iter = list_iterator_create(part_list); + while ((part_ptr = (struct part_record *) list_next(iter))) { + if (!part_priority_set) { + part_priority = part_ptr->priority; + part_priority_set = true; + } else if (part_priority != part_ptr->priority) { + result = false; + break; + } + } + list_iterator_destroy(iter); + + return result; +} + /* * schedule - attempt to schedule all pending jobs * pending jobs for each partition will be scheduled in priority @@ -692,8 +716,11 @@ extern int schedule(uint32_t job_limit) backfill_sched = true; #endif if ((strcmp(sched_type, "sched/builtin") == 0) && - (strcmp(prio_type, "priority/basic") == 0)) + (strcmp(prio_type, "priority/basic") == 0) && + _all_partition_priorities_same()) fifo_sched = true; + else + fifo_sched = false; /* Disable avoiding of fragmentation with sched/wiki */ if ((strcmp(sched_type, "sched/wiki") == 0) || (strcmp(sched_type, "sched/wiki2") == 0))