From badc6253af8927a42771cc2d1b74c228c8c83272 Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Tue, 10 Oct 2006 19:24:16 +0000 Subject: [PATCH] send conf task_prolog, task_epilog, and propagate_prio from slurmd down to slurmstepd in order to avoid having to parse slurm.conf in slurmstepd for each step. --- src/slurmd/common/slurmstepd_init.c | 12 ++++++++++++ src/slurmd/slurmd/slurmd.c | 1 + src/slurmd/slurmd/slurmd.h | 2 ++ src/slurmd/slurmstepd/mgr.c | 7 +++++-- src/slurmd/slurmstepd/slurmstepd.c | 4 ---- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/slurmd/common/slurmstepd_init.c b/src/slurmd/common/slurmstepd_init.c index f88b1c57a0d..e01676ba84a 100644 --- a/src/slurmd/common/slurmstepd_init.c +++ b/src/slurmd/common/slurmstepd_init.c @@ -44,7 +44,10 @@ extern void pack_slurmd_conf_lite(slurmd_conf_t *conf, Buf buffer) packstr(conf->spooldir, buffer); packstr(conf->node_name, buffer); packstr(conf->logfile, buffer); + packstr(conf->task_prolog, buffer); + packstr(conf->task_epilog, buffer); pack16(conf->job_acct_freq, buffer); + pack16(conf->propagate_prio, buffer); pack32(conf->debug_level, buffer); pack32(conf->daemonize, buffer); pack32((uint32_t)conf->slurm_user_id, buffer); @@ -59,7 +62,10 @@ extern int unpack_slurmd_conf_lite_no_alloc(slurmd_conf_t *conf, Buf buffer) safe_unpackstr_xmalloc(&conf->spooldir, &uint16_tmp, buffer); safe_unpackstr_xmalloc(&conf->node_name, &uint16_tmp, buffer); safe_unpackstr_xmalloc(&conf->logfile, &uint16_tmp, buffer); + safe_unpackstr_xmalloc(&conf->task_prolog, &uint16_tmp, buffer); + safe_unpackstr_xmalloc(&conf->task_epilog, &uint16_tmp, buffer); safe_unpack16(&conf->job_acct_freq, buffer); + safe_unpack16(&conf->propagate_prio, buffer); safe_unpack32(&uint32_tmp, buffer); conf->debug_level = uint32_tmp; safe_unpack32(&uint32_tmp, buffer); @@ -71,5 +77,11 @@ extern int unpack_slurmd_conf_lite_no_alloc(slurmd_conf_t *conf, Buf buffer) unpack_error: error("unpack_error in unpack_slurmd_conf_lite_no_alloc: %m"); + xfree(conf->hostname); + xfree(conf->spooldir); + xfree(conf->node_name); + xfree(conf->logfile); + xfree(conf->task_prolog); + xfree(conf->task_epilog); return SLURM_ERROR; } diff --git a/src/slurmd/slurmd/slurmd.c b/src/slurmd/slurmd/slurmd.c index 757e66252be..11d278b8e0c 100644 --- a/src/slurmd/slurmd/slurmd.c +++ b/src/slurmd/slurmd/slurmd.c @@ -564,6 +564,7 @@ _read_config() _free_and_set(&conf->task_epilog, xstrdup(cf->task_epilog)); _free_and_set(&conf->pubkey, path_pubkey); + conf->propagate_prio = cf->propagate_prio_process; conf->job_acct_freq = cf->job_acct_freq; if ( (conf->node_name == NULL) || diff --git a/src/slurmd/slurmd/slurmd.h b/src/slurmd/slurmd/slurmd.h index 8b565f9b8ca..8fb9b92f246 100644 --- a/src/slurmd/slurmd/slurmd.h +++ b/src/slurmd/slurmd/slurmd.h @@ -102,6 +102,8 @@ typedef struct slurmd_config { pthread_mutex_t config_mutex; /* lock for slurmd_config access */ uint16_t job_acct_freq; uint16_t use_pam; + uint16_t propagate_prio; /* PropagatePrioProcess flag */ + } slurmd_conf_t; slurmd_conf_t * conf; diff --git a/src/slurmd/slurmstepd/mgr.c b/src/slurmd/slurmstepd/mgr.c index 84594d2d756..b1fbfe48ef4 100644 --- a/src/slurmd/slurmstepd/mgr.c +++ b/src/slurmd/slurmstepd/mgr.c @@ -636,6 +636,10 @@ job_manager(slurmd_job_t *job) debug3("Entered job_manager for %u.%u pid=%lu", job->jobid, job->stepid, (unsigned long) job->jmgr_pid); + if (slurm_proctrack_init() != SLURM_SUCCESS) { + rc = SLURM_FAILURE; + goto fail1; + } if (!job->batch && (interconnect_preinit(job->switch_job) < 0)) { @@ -775,7 +779,6 @@ _fork_all_tasks(slurmd_job_t *job) int *writefds; /* array of write file descriptors */ int *readfds; /* array of read file descriptors */ int fdpair[2]; - uint16_t propagate_prio = slurm_get_propagate_prio_process(); struct priv_state sprivs; jobacct_id_t jobacct_id; @@ -874,7 +877,7 @@ _fork_all_tasks(slurmd_job_t *job) close(readfds[j]); } - if (propagate_prio == 1) + if (conf->propagate_prio == 1) _set_prio_process(job); if (_become_user(job, &sprivs) < 0) { diff --git a/src/slurmd/slurmstepd/slurmstepd.c b/src/slurmd/slurmstepd/slurmstepd.c index 243b16b4bd3..1deb6e6400b 100644 --- a/src/slurmd/slurmstepd/slurmstepd.c +++ b/src/slurmd/slurmstepd/slurmstepd.c @@ -89,11 +89,7 @@ main (int argc, char *argv[]) conf = xmalloc(sizeof(*conf)); conf->argv = &argv; conf->argc = &argc; - conf->task_prolog = slurm_get_task_prolog(); - conf->task_epilog = slurm_get_task_epilog(); init_setproctitle(argc, argv); - if (slurm_proctrack_init() != SLURM_SUCCESS) - return SLURM_FAILURE; _init_from_slurmd(STDIN_FILENO, argv, &cli, &self, &msg, &ngids, &gids); -- GitLab