diff --git a/NEWS b/NEWS index 101a26bab6ed3ff6ac1fc212a106acbab5f6de23..1784ec560d097353ad790aa77fbbb970a3ddaa9d 100644 --- a/NEWS +++ b/NEWS @@ -92,6 +92,12 @@ documents those changes that are of interest to users and admins. priority/multifactor, the slurmctld will not core dump on processing usage. -- QOS will not be reset to the default when added back a previously deleted association. + -- Do not set a job's virtual memory limit based upon the job's specified + memory limit (which should be a real memory limit, not virtual). + -- Strip single and double quotes out of a node's reason string to avoid + confusing Moab. + -- BLUEGENE - fix for sinfo/sview for displaying proper node count for nodes + in draining state. * Changes in SLURM 2.0.3 ======================== diff --git a/src/plugins/sched/wiki2/get_nodes.c b/src/plugins/sched/wiki2/get_nodes.c index 1e7ebd99af3e7b35bc62e47e5fb70ac811dd6f65..54eb6ce227c0eac42bba4427715cac7ae613c812 100644 --- a/src/plugins/sched/wiki2/get_nodes.c +++ b/src/plugins/sched/wiki2/get_nodes.c @@ -290,8 +290,16 @@ static char * _dump_node(struct node_record *node_ptr, hostlist_t hl, snprintf(tmp, sizeof(tmp), ":STATE=%s;", _get_node_state(node_ptr)); xstrcat(buf, tmp); if (node_ptr->reason) { - snprintf(tmp, sizeof(tmp), "CAT=\"%s\";", node_ptr->reason); + /* Strip out any quotes, they confuse Moab */ + char *reason, *bad_char; + reason = xstrdup(node_ptr->reason); + while ((bad_char = strchr(node_ptr->reason, '\''))) + bad_char[0] = ' '; + while ((bad_char = strchr(node_ptr->reason, '\"'))) + bad_char[0] = ' '; + snprintf(tmp, sizeof(tmp), "CAT=\"%s\";", reason); xstrcat(buf, tmp); + xfree(reason); } if (update_time > last_node_update) diff --git a/src/slurmd/slurmstepd/ulimits.c b/src/slurmd/slurmstepd/ulimits.c index 7e171903af72f9bebe60e2f29d256578342bfdfd..7c70f6aa7763322ac9b50ab56c61e486884a8d07 100644 --- a/src/slurmd/slurmstepd/ulimits.c +++ b/src/slurmd/slurmstepd/ulimits.c @@ -87,28 +87,13 @@ int set_user_limits(slurmd_job_t *job) * handle job limit (for all spawned processes) in slurmd */ task_mem_bytes = job->job_mem; /* MB */ task_mem_bytes *= (1024 * 1024); -#ifdef RLIMIT_AS - if ((task_mem_bytes) && (getrlimit(RLIMIT_AS, &r) == 0) && - (r.rlim_max > task_mem_bytes)) { - r.rlim_max = r.rlim_cur = task_mem_bytes; - if (setrlimit(RLIMIT_AS, &r)) { - /* Indicates that limit has already been exceeded */ - fatal("setrlimit(RLIMIT_AS, %u MB): %m", job->job_mem); - } else - info("Set task_mem(%u MB)", job->job_mem); -#if 0 - getrlimit(RLIMIT_AS, &r); - info("task memory limits: %u %u", r.rlim_cur, r.rlim_max); -#endif - } -#endif #ifdef RLIMIT_DATA if ((task_mem_bytes) && (getrlimit(RLIMIT_DATA, &r) == 0) && (r.rlim_max > task_mem_bytes)) { r.rlim_max = r.rlim_cur = task_mem_bytes; if (setrlimit(RLIMIT_DATA, &r)) { /* Indicates that limit has already been exceeded */ - fatal("setrlimit(RLIMIT_DATA, %u MB): %m", job->job_mem); + fatal("setrlimit(RLIMIT_DATA, %u MB): %m",job->job_mem); } else info("Set task_data(%u MB)", job->job_mem); #if 0