diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c index 5c7437dff9a8941c75df998a5d85f1255577e665..f106d3013cf9e0f5a886bb8d09c5c6e88a2ffe98 100644 --- a/src/common/slurm_protocol_defs.c +++ b/src/common/slurm_protocol_defs.c @@ -1862,6 +1862,27 @@ extern char *job_reason_string(enum job_state_reason inx) } } +/* If the job is held up by a QOS GRP limit return true else return false. */ +extern bool job_state_qos_grp_limit(enum job_state_reason state_reason) +{ + if ((state_reason >= WAIT_QOS_GRP_CPU && + state_reason <= WAIT_QOS_GRP_WALL) || + (state_reason == WAIT_QOS_GRP_MEM_MIN) || + (state_reason == WAIT_QOS_GRP_MEM_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_ENERGY && + state_reason <= WAIT_QOS_GRP_ENERGY_RUN_MIN) || + (state_reason == WAIT_QOS_GRP_NODE_MIN) || + (state_reason == WAIT_QOS_GRP_NODE_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_GRES && + state_reason <= WAIT_QOS_GRP_GRES_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_LIC && + state_reason <= WAIT_QOS_GRP_LIC_RUN_MIN) || + (state_reason >= WAIT_QOS_GRP_BB && + state_reason <= WAIT_QOS_GRP_BB_RUN_MIN)) + return true; + return false; +} + extern void slurm_free_get_kvs_msg(kvs_get_msg_t *msg) { if (msg) { diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index 81b40cdd48ab3258ed352ef606112e2c4e248ab0..286461d1bb87ee7ebaf23a17b394878c23bceeb3 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -1478,6 +1478,7 @@ extern uint16_t bb_state_num(char *tok); extern char *health_check_node_state_str(uint32_t node_state); extern char *job_reason_string(enum job_state_reason inx); +extern bool job_state_qos_grp_limit(enum job_state_reason state_reason); extern char *job_share_string(uint16_t shared); extern char *job_state_string(uint32_t inx); extern char *job_state_string_compact(uint32_t inx);