diff --git a/NEWS b/NEWS index 50579ee14f3aa0ffe5434167a03a73c1707fa950..5b08bd9e7b417610e6b917b7d2ba220f17faa308 100644 --- a/NEWS +++ b/NEWS @@ -128,6 +128,9 @@ documents those changes that are of interest to users and admins. slurm_conf_reinit. -- Fix gres race condition that could result in job deallocation error message. -- Correct NumCPUs count for jobs with --exclusive option. + -- When creating reservation with CoreCnt check that Slurm + uses SelectType=select/cons_res otherwise don't send the + request to slurmctld and return an error. * Changes in Slurm 14.03.6 ========================== diff --git a/src/scontrol/create_res.c b/src/scontrol/create_res.c index 46f3ba55b91beaee9aa25de83dd37134b5c982c0..570a47a1b6ec5901a98d9d6a93bfa88cd0e00292 100644 --- a/src/scontrol/create_res.c +++ b/src/scontrol/create_res.c @@ -36,6 +36,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. \*****************************************************************************/ +#define _GNU_SOURCE #include "src/scontrol/scontrol.h" #include "src/slurmctld/reservation.h" @@ -76,7 +77,7 @@ static char * _process_plus_minus(char plus_or_minus, char *src) /* * _parse_flags is used to parse the Flags= option. It handles - * daily, weekly, static_alloc, part_nodes, and maint, optionally + * daily, weekly, static_alloc, part_nodes, and maint, optionally * preceded by + or -, separated by a comma but no spaces. */ static uint32_t _parse_flags(const char *flagstr, const char *msg) @@ -301,13 +302,13 @@ scontrol_parse_res_options(int argc, char *argv[], const char *msg, strncasecmp(tag, "CPUCount", MAX(taglen,5)) == 0) { char *endptr = NULL, *core_cnt, *tok, *ptrptr = NULL; - char *type = NULL; + char *type; int node_inx = 0; type = slurm_get_select_type(); - if (!strcasecmp(type, "select/linear")) { - error("Invalid to use CoreCnt or CPUCnt with " - "SelectType=select/linear"); + if (strcasestr(type, "cons_res") == NULL) { + error("CoreCnt or CPUCnt is only suported when " + "SelectType includes select/cons_res"); xfree(type); return -1; }