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))