From e8c2bfc5e0c1b102365c9f66eb41bc77ef227d28 Mon Sep 17 00:00:00 2001 From: Danny Auble <da@schedmd.com> Date: Fri, 10 Feb 2017 13:42:06 -0700 Subject: [PATCH] Make it so tmpdir processes %n and %h correctly. This is needed to make it so we can run pmix with multi-slurmd. --- src/common/slurm_protocol_api.c | 8 ++++++-- src/common/slurm_protocol_api.h | 2 +- src/plugins/mpi/pmix/pmixp_info.c | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/common/slurm_protocol_api.c b/src/common/slurm_protocol_api.c index 9312b173079..c1a93bb350c 100644 --- a/src/common/slurm_protocol_api.c +++ b/src/common/slurm_protocol_api.c @@ -988,7 +988,7 @@ char *slurm_get_state_save_location(void) * returns the TmpFS configuration parameter from slurmctld_conf object * RET char * - tmp_fs, MUST be xfreed by caller */ -extern char *slurm_get_tmp_fs(void) +extern char *slurm_get_tmp_fs(char *node_name) { char *tmp_fs = NULL; slurm_ctl_conf_t *conf = NULL; @@ -996,7 +996,11 @@ extern char *slurm_get_tmp_fs(void) if (slurmdbd_conf) { } else { conf = slurm_conf_lock(); - tmp_fs = xstrdup(conf->tmp_fs); + if (!node_name) + tmp_fs = xstrdup(conf->tmp_fs); + else + tmp_fs = slurm_conf_expand_slurmd_path( + conf->tmp_fs, node_name); slurm_conf_unlock(); } return tmp_fs; diff --git a/src/common/slurm_protocol_api.h b/src/common/slurm_protocol_api.h index cafa4775554..93948cc2151 100644 --- a/src/common/slurm_protocol_api.h +++ b/src/common/slurm_protocol_api.h @@ -408,7 +408,7 @@ char *slurm_get_state_save_location(void); * returns the TmpFS configuration parameter from slurmctld_conf object * RET char * - tmp_fs, MUST be xfreed by caller */ -extern char *slurm_get_tmp_fs(void); +extern char *slurm_get_tmp_fs(char *node_name); /* slurm_get_auth_type * returns the authentication type from slurmctld_conf object diff --git a/src/plugins/mpi/pmix/pmixp_info.c b/src/plugins/mpi/pmix/pmixp_info.c index a23a2b183cc..f17290b9cba 100644 --- a/src/plugins/mpi/pmix/pmixp_info.c +++ b/src/plugins/mpi/pmix/pmixp_info.c @@ -305,7 +305,8 @@ static int _env_set(char ***env) if (p) _pmixp_job_info.cli_tmpdir_base = xstrdup(p); else - _pmixp_job_info.cli_tmpdir_base = slurm_get_tmp_fs(); + _pmixp_job_info.cli_tmpdir_base = slurm_get_tmp_fs( + _pmixp_job_info.hostname); _pmixp_job_info.cli_tmpdir = xstrdup_printf("%s/spmix_appdir_%d.%d", -- GitLab