From 3f44b3cdb311dad970e4b7442c05fde841e7717c Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Fri, 19 Mar 2004 15:48:18 +0000 Subject: [PATCH] Fix bugs introduced through time preventing use of -f option in slurmd and slurmctld (specify different configuration file). --- src/common/read_config.c | 3 ++- src/common/read_config.h | 3 ++- src/common/slurm_protocol_api.c | 19 ++++++++++++++++--- src/common/slurm_protocol_api.h | 6 ++++++ src/slurmctld/controller.c | 5 +++-- src/slurmd/slurmd.c | 1 + 6 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/common/read_config.c b/src/common/read_config.c index 2881d4fd7e4..9f3294bda70 100644 --- a/src/common/read_config.c +++ b/src/common/read_config.c @@ -122,7 +122,8 @@ free_slurm_conf (slurm_ctl_conf_t *ctl_conf_ptr) /* * init_slurm_conf - initialize or re-initialize the slurm configuration - * values. + * values to defaults (NULL or NO_VAL). Note that the configuration + * file pathname (slurm_conf) is not changed. * IN/OUT ctl_conf_ptr - pointer to data structure to be initialized */ void diff --git a/src/common/read_config.h b/src/common/read_config.h index 102fd1d06fe..65deae016d2 100644 --- a/src/common/read_config.h +++ b/src/common/read_config.h @@ -54,7 +54,8 @@ /* * init_slurm_conf - initialize or re-initialize the slurm configuration - * values. + * values defaults (NULL or NO_VAL). Note that the configuration + * file pathname (slurm_conf) is not changed. * IN/OUT ctl_conf_ptr - pointer to data structure to be initialized */ extern void init_slurm_conf (slurm_ctl_conf_t *ctl_conf_ptr); diff --git a/src/common/slurm_protocol_api.c b/src/common/slurm_protocol_api.c index 642013e5373..c8cd451315a 100644 --- a/src/common/slurm_protocol_api.c +++ b/src/common/slurm_protocol_api.c @@ -98,6 +98,18 @@ slurm_protocol_config_t *slurm_get_api_config() return proto_conf; } +/* slurm_api_set_conf_file + * set slurm configuration file to a non-default value + */ +extern void slurm_api_set_conf_file(char *pathname) +{ + if (pathname == NULL) + return; + xfree(slurmctld_conf.slurm_conf); + slurmctld_conf.slurm_conf = xstrdup(pathname); + return; +} + /* slurm_api_set_default_config * called by the send_controller_msg function to insure that at least * the compiled in default slurm_protocol_config object is initialized @@ -110,8 +122,9 @@ int slurm_api_set_default_config() static time_t last_config_update = (time_t) 0; slurm_mutex_lock(&config_lock); - if (stat(SLURM_CONFIG_FILE, &config_stat) < 0) { - error("Can't stat %s: %m", SLURM_CONFIG_FILE); + if ( (slurmctld_conf.slurm_conf) && + (stat(slurmctld_conf.slurm_conf, &config_stat) < 0)) { + error("Can't stat %s: %m", slurmctld_conf.slurm_conf); rc = SLURM_ERROR; goto cleanup; } @@ -121,7 +134,7 @@ int slurm_api_set_default_config() goto cleanup; last_config_update = config_stat.st_mtime; - free_slurm_conf(&slurmctld_conf); + init_slurm_conf(&slurmctld_conf); read_slurm_conf_ctl(&slurmctld_conf); if ((slurmctld_conf.control_addr == NULL) || diff --git a/src/common/slurm_protocol_api.h b/src/common/slurm_protocol_api.h index b6d3a14938c..84139c27002 100644 --- a/src/common/slurm_protocol_api.h +++ b/src/common/slurm_protocol_api.h @@ -83,6 +83,12 @@ int inline slurm_set_api_config(slurm_protocol_config_t * protocol_conf); */ inline slurm_protocol_config_t *slurm_get_api_config(); +/* slurm_api_set_conf_file + * set slurm configuration file to a non-default value + * pathname IN - pathname of slurm configuration file to be used + */ +extern void slurm_api_set_conf_file(char *pathname); + /* slurm_api_set_default_config * called by the send_controller_msg function to insure that at least * the compiled in default slurm_protocol_config object is initialized diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c index e512ea6c8eb..fce1f673206 100644 --- a/src/slurmctld/controller.c +++ b/src/slurmctld/controller.c @@ -145,11 +145,12 @@ int main(int argc, char *argv[]) slurmctld_pid = getpid(); _parse_commandline(argc, argv, &slurmctld_conf); init_locks(); + slurm_api_set_conf_file(slurmctld_conf.slurm_conf); /* Get SlurmctldPidFile for _kill_old_slurmctld */ if ((error_code = read_slurm_conf_ctl (&slurmctld_conf))) fatal("read_slurm_conf_ctl reading %s: %s", - SLURM_CONFIG_FILE, slurm_strerror(error_code)); + slurmctld_conf.slurm_conf, slurm_strerror(error_code)); update_logging(); _kill_old_slurmctld(); @@ -230,7 +231,7 @@ int main(int argc, char *argv[]) /* Now recover the remaining state information */ if ((error_code = read_slurm_conf(recover))) { fatal("read_slurm_conf reading %s: %s", - SLURM_CONFIG_FILE, + slurmctld_conf.slurm_conf, slurm_strerror(error_code)); } } else { diff --git a/src/slurmd/slurmd.c b/src/slurmd/slurmd.c index 246bd7206d2..cdf859f7ca6 100644 --- a/src/slurmd/slurmd.c +++ b/src/slurmd/slurmd.c @@ -446,6 +446,7 @@ _read_config() char *path_pubkey; conf->cf.slurm_conf = xstrdup(conf->conffile); + slurm_api_set_conf_file(conf->conffile); read_slurm_conf_ctl(&conf->cf); -- GitLab