From a024bcf9d058fef884eaf183f834e1eb3f35e60f Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Mon, 17 Jul 2006 22:06:31 +0000 Subject: [PATCH] svn merge -r8549:8592 https://eris.llnl.gov/svn/slurm/branches/slurm-1.1 --- NEWS | 5 ++++- src/sacct/options.c | 8 ++++---- src/sinfo/opts.c | 3 +++ src/squeue/opts.c | 11 +++++++++++ src/srun/allocate.c | 8 ++++++++ src/srun/msg.c | 5 ++--- src/srun/msg.h | 1 + 7 files changed, 33 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 687ae9a190a..50b0b5f764e 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,9 @@ documents those changes that are of interest to users and admins. the code) -- Added support for OSX build. +* Changes in SLURM 1.1.5 +======================== + * Changes in SLURM 1.1.4 ======================== -- Improve error handling in hierarchical communications logic. @@ -1762,7 +1765,7 @@ documents those changes that are of interest to users and admins. -- "fatal: _shm_unlock: Numerical result out of range" bug fixed in slurmd. -- Config file parsing is now case insensitive. -- SLURM_NODELIST environment variable now set in allocate mode. - + * Changes in SLURM 0.2.0-pre2 ============================= diff --git a/src/sacct/options.c b/src/sacct/options.c index 62916735930..5b0b8fbc9b2 100644 --- a/src/sacct/options.c +++ b/src/sacct/options.c @@ -1581,23 +1581,23 @@ void do_fdump(char* f[], int lc) "nvcsw", /* F_VCSW */ "nivcsw", /* F_NIVCSW */ "max_vsize", /* F_MAX_VSIZE */ - "max_vsize_node", /* F_MAX_VSIZE_NODE */ "max_vsize_task", /* F_MAX_VSIZE_TASK */ "ave_vsize", /* F_AVE_VSIZE */ "max_rss", /* F_MAX_RSS */ - "max_rss_node", /* F_MAX_RSS_NODE */ "max_rss_task", /* F_MAX_RSS_TASK */ "ave_rss", /* F_AVE_RSS */ "max_pages", /* F_MAX_PAGES */ - "max_pages_node", /* F_MAX_PAGES_NODE */ "max_pages_task", /* F_MAX_PAGES_TASK */ "ave_pages", /* F_AVE_PAGES */ "min_cputime", /* F_MIN_CPU */ - "min_cputime_node", /* F_MIN_CPU_NODE */ "min_cputime_task", /* F_MIN_CPU_TASK */ "ave_cputime", /* F_AVE_RSS */ "StepName", /* F_STEPNAME */ "StepNodes", /* F_STEPNODES */ + "max_vsize_node", /* F_MAX_VSIZE_NODE */ + "max_rss_node", /* F_MAX_RSS_NODE */ + "max_pages_node", /* F_MAX_PAGES_NODE */ + "min_cputime_node", /* F_MIN_CPU_NODE */ NULL}; char *suspend[] = {"Suspend/Run time", /* F_TOT_ELAPSED */ diff --git a/src/sinfo/opts.c b/src/sinfo/opts.c index a7002ee7f9b..38fb962ba46 100644 --- a/src/sinfo/opts.c +++ b/src/sinfo/opts.c @@ -146,6 +146,7 @@ extern void parse_command_line(int argc, char *argv[]) params.long_output = true; break; case (int) 'n': + xfree(params.nodes); params.nodes= xstrdup(optarg); /* * confirm valid nodelist entry @@ -162,6 +163,7 @@ extern void parse_command_line(int argc, char *argv[]) params.node_flag = true; break; case (int) 'o': + xfree(params.format); params.format = xstrdup(optarg); break; case (int) 'p': @@ -182,6 +184,7 @@ extern void parse_command_line(int argc, char *argv[]) params.sort = xstrdup(optarg); break; case (int) 't': + xfree(params.states); params.states = xstrdup(optarg); if (!(params.state_list = _build_state_list(optarg))) { error ("valid states: %s", _node_state_list ()); diff --git a/src/squeue/opts.c b/src/squeue/opts.c index e043086b5a5..0ec463c8cf4 100644 --- a/src/squeue/opts.c +++ b/src/squeue/opts.c @@ -81,6 +81,7 @@ parse_command_line( int argc, char* argv[] ) char *env_val = NULL; int opt_char; int option_index; + hostlist_t host_list; static struct option long_options[] = { {"all", no_argument, 0, 'a'}, {"noheader", no_argument, 0, 'h'}, @@ -144,12 +145,20 @@ parse_command_line( int argc, char* argv[] ) case (int) 'n': xfree(params.node); params.node = xstrdup(optarg); + host_list = hostlist_create(params.node); + if (!host_list) { + error("'%s' invalid entry for --node", + optarg); + exit(1); + } + hostlist_destroy(host_list); break; case (int) 'o': xfree(params.format); params.format = xstrdup(optarg); break; case (int) 'p': + xfree(params.partitions); params.partitions = xstrdup(optarg); params.part_list = _build_part_list( params.partitions ); @@ -167,11 +176,13 @@ parse_command_line( int argc, char* argv[] ) params.sort = xstrdup(optarg); break; case (int) 't': + xfree(params.states); params.states = xstrdup(optarg); params.state_list = _build_state_list( params.states ); break; case (int) 'u': + xfree(params.users); params.users = xstrdup(optarg); params.user_list = _build_user_list( params.users ); diff --git a/src/srun/allocate.c b/src/srun/allocate.c index 380997a270c..a6806cc4417 100644 --- a/src/srun/allocate.c +++ b/src/srun/allocate.c @@ -334,6 +334,7 @@ _handle_msg(slurm_msg_t *msg, resource_allocation_response_msg_t **resp) uid_t uid = getuid(); uid_t slurm_uid = (uid_t) slurm_get_slurm_user_id(); int rc = 0; + srun_timeout_msg_t *to; if ((req_uid != slurm_uid) && (req_uid != 0) && (req_uid != uid)) { error ("Security violation, slurm message from uid %u", @@ -353,6 +354,13 @@ _handle_msg(slurm_msg_t *msg, resource_allocation_response_msg_t **resp) *resp = msg->data; rc = 1; break; + case SRUN_TIMEOUT: + debug2("timeout received"); + to = msg->data; + timeout_handler(to->timeout); + slurm_send_rc_msg(msg, SLURM_SUCCESS); + slurm_free_srun_timeout_msg(msg->data); + break; default: error("received spurious message type: %d\n", msg->msg_type); diff --git a/src/srun/msg.c b/src/srun/msg.c index 7caaa82f2bd..2a6ace6fc46 100644 --- a/src/srun/msg.c +++ b/src/srun/msg.c @@ -91,7 +91,6 @@ static void _msg_thr_poll(srun_job_t *job); static void _set_jfds_nonblocking(srun_job_t *job); static void _print_pid_list(const char *host, int ntasks, uint32_t *pid, char *executable_name); -static void _timeout_handler(time_t timeout); static void _node_fail_handler(char *nodelist, srun_job_t *job); #define _poll_set_rd(_pfd, _fd) do { \ @@ -324,7 +323,7 @@ rwfail: * FIXME: How much lead time do we want for this message? Some jobs may * require tens of minutes to gracefully terminate. */ -static void _timeout_handler(time_t timeout) +void timeout_handler(time_t timeout) { static time_t last_timeout = 0; @@ -840,7 +839,7 @@ _handle_msg(srun_job_t *job, slurm_msg_t *msg) case SRUN_TIMEOUT: verbose("timeout received"); to = msg->data; - _timeout_handler(to->timeout); + timeout_handler(to->timeout); slurm_send_rc_msg(msg, SLURM_SUCCESS); slurm_free_srun_timeout_msg(msg->data); break; diff --git a/src/srun/msg.h b/src/srun/msg.h index 832e2c29d2c..4cd2661cd97 100644 --- a/src/srun/msg.h +++ b/src/srun/msg.h @@ -33,6 +33,7 @@ void *msg_thr(void *arg); int msg_thr_create(srun_job_t *job); slurm_fd slurmctld_msg_init(void); +void timeout_handler(time_t timeout); typedef struct slurmctld_communication_addr { char *hostname; -- GitLab