Shorten the session directory name as some OS's are now providing unusually long temp directory names, causing us to overflow the sockaddr field
Этот коммит содержится в:
родитель
b7122963e1
Коммит
ee56d9dc1a
0
ompi/mca/mtl/psm2/mtl_psm2_types.h
Исполняемый файл → Обычный файл
0
ompi/mca/mtl/psm2/mtl_psm2_types.h
Исполняемый файл → Обычный файл
0
ompi/mpi/fortran/use-mpi-f08-desc/ISO_Fortran_binding.h
Исполняемый файл → Обычный файл
0
ompi/mpi/fortran/use-mpi-f08-desc/ISO_Fortran_binding.h
Исполняемый файл → Обычный файл
0
opal/mca/pmix/ext20/pmix_ext20.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/ext20/pmix_ext20.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/ext20/pmix_ext20_server_north.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/ext20/pmix_ext20_server_north.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix/src/server/pmix_server_listener.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix/src/server/pmix_server_listener.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix/src/tool/pmix_tool.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix/src/tool/pmix_tool.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix2x.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix2x.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix2x_server_north.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix2x/pmix2x_server_north.c
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix_server.h
Исполняемый файл → Обычный файл
0
opal/mca/pmix/pmix_server.h
Исполняемый файл → Обычный файл
@ -138,7 +138,7 @@ int orte_ess_base_app_setup(bool db_restrict_local)
|
|||||||
orte_process_info.nodename));
|
orte_process_info.nodename));
|
||||||
if (ORTE_SUCCESS != (ret = orte_session_dir(true,
|
if (ORTE_SUCCESS != (ret = orte_session_dir(true,
|
||||||
orte_process_info.tmpdir_base,
|
orte_process_info.tmpdir_base,
|
||||||
orte_process_info.nodename, NULL,
|
orte_process_info.nodename,
|
||||||
ORTE_PROC_MY_NAME))) {
|
ORTE_PROC_MY_NAME))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_session_dir";
|
error = "orte_session_dir";
|
||||||
|
@ -239,23 +239,12 @@ int orte_ess_base_orted_setup(char **hosts)
|
|||||||
*/
|
*/
|
||||||
if (ORTE_SUCCESS != (ret = orte_session_dir(false,
|
if (ORTE_SUCCESS != (ret = orte_session_dir(false,
|
||||||
orte_process_info.tmpdir_base,
|
orte_process_info.tmpdir_base,
|
||||||
orte_process_info.nodename, NULL,
|
orte_process_info.nodename,
|
||||||
ORTE_PROC_MY_NAME))) {
|
ORTE_PROC_MY_NAME))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_session_dir define";
|
error = "orte_session_dir define";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
/* if we have multiple daemons/node, then add our pid to the name */
|
|
||||||
if (NULL != (param = getenv("OMPI_MCA_ras_base_multiplier")) &&
|
|
||||||
1 < strtol(param, NULL, 10)) {
|
|
||||||
if (0 > asprintf(¶m, "%s.%lu", orte_process_info.top_session_dir, (unsigned long)orte_process_info.pid)) {
|
|
||||||
ret = ORTE_ERR_OUT_OF_RESOURCE;
|
|
||||||
error = "create top session dir";
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
free(orte_process_info.top_session_dir);
|
|
||||||
orte_process_info.top_session_dir = param;
|
|
||||||
}
|
|
||||||
/* clear the session directory just in case there are
|
/* clear the session directory just in case there are
|
||||||
* stale directories laying around
|
* stale directories laying around
|
||||||
*/
|
*/
|
||||||
@ -263,7 +252,7 @@ int orte_ess_base_orted_setup(char **hosts)
|
|||||||
/* now actually create the directory tree */
|
/* now actually create the directory tree */
|
||||||
if (ORTE_SUCCESS != (ret = orte_session_dir(true,
|
if (ORTE_SUCCESS != (ret = orte_session_dir(true,
|
||||||
orte_process_info.tmpdir_base,
|
orte_process_info.tmpdir_base,
|
||||||
orte_process_info.nodename, NULL,
|
orte_process_info.nodename,
|
||||||
ORTE_PROC_MY_NAME))) {
|
ORTE_PROC_MY_NAME))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "orte_session_dir";
|
error = "orte_session_dir";
|
||||||
|
@ -148,7 +148,7 @@ int orte_ess_base_tool_setup(void)
|
|||||||
if (ORTE_SUCCESS != (ret = orte_session_dir_get_name(NULL,
|
if (ORTE_SUCCESS != (ret = orte_session_dir_get_name(NULL,
|
||||||
&orte_process_info.tmpdir_base,
|
&orte_process_info.tmpdir_base,
|
||||||
&orte_process_info.top_session_dir,
|
&orte_process_info.top_session_dir,
|
||||||
orte_process_info.nodename, NULL, NULL))) {
|
orte_process_info.nodename, NULL))) {
|
||||||
ORTE_ERROR_LOG(ret);
|
ORTE_ERROR_LOG(ret);
|
||||||
error = "define session dir names";
|
error = "define session dir names";
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -296,7 +296,7 @@ static int rte_init(void)
|
|||||||
*/
|
*/
|
||||||
if (ORTE_SUCCESS != (ret = orte_session_dir(false,
|
if (ORTE_SUCCESS != (ret = orte_session_dir(false,
|
||||||
orte_process_info.tmpdir_base,
|
orte_process_info.tmpdir_base,
|
||||||
orte_process_info.nodename, NULL,
|
orte_process_info.nodename,
|
||||||
ORTE_PROC_MY_NAME))) {
|
ORTE_PROC_MY_NAME))) {
|
||||||
error = "orte_session_dir define";
|
error = "orte_session_dir define";
|
||||||
goto error;
|
goto error;
|
||||||
@ -309,7 +309,7 @@ static int rte_init(void)
|
|||||||
/* now actually create the directory tree */
|
/* now actually create the directory tree */
|
||||||
if (ORTE_SUCCESS != (ret = orte_session_dir(true,
|
if (ORTE_SUCCESS != (ret = orte_session_dir(true,
|
||||||
orte_process_info.tmpdir_base,
|
orte_process_info.tmpdir_base,
|
||||||
orte_process_info.nodename, NULL,
|
orte_process_info.nodename,
|
||||||
ORTE_PROC_MY_NAME))) {
|
ORTE_PROC_MY_NAME))) {
|
||||||
error = "orte_session_dir";
|
error = "orte_session_dir";
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -739,7 +739,7 @@ static int raw_link_local_files(orte_job_t *jdata,
|
|||||||
path = NULL;
|
path = NULL;
|
||||||
rc = orte_session_dir_get_name(&path, &prefix, NULL,
|
rc = orte_session_dir_get_name(&path, &prefix, NULL,
|
||||||
orte_process_info.nodename,
|
orte_process_info.nodename,
|
||||||
NULL, &proc->name);
|
&proc->name);
|
||||||
/* create it, if it doesn't already exist */
|
/* create it, if it doesn't already exist */
|
||||||
if (OPAL_SUCCESS != (rc = opal_os_dirpath_create(path, S_IRWXU))) {
|
if (OPAL_SUCCESS != (rc = opal_os_dirpath_create(path, S_IRWXU))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
|
@ -1106,7 +1106,7 @@ static int setup_child(orte_job_t *jdata,
|
|||||||
param = NULL;
|
param = NULL;
|
||||||
if (ORTE_SUCCESS != (rc = orte_session_dir_get_name(¶m, &value, NULL,
|
if (ORTE_SUCCESS != (rc = orte_session_dir_get_name(¶m, &value, NULL,
|
||||||
orte_process_info.nodename,
|
orte_process_info.nodename,
|
||||||
NULL, &child->name))) {
|
&child->name))) {
|
||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
if (NULL != value) {
|
if (NULL != value) {
|
||||||
free(value);
|
free(value);
|
||||||
|
0
orte/orted/orted_submit.c
Исполняемый файл → Обычный файл
0
orte/orted/orted_submit.c
Исполняемый файл → Обычный файл
0
orte/orted/pmix/pmix_server.c
Исполняемый файл → Обычный файл
0
orte/orted/pmix/pmix_server.c
Исполняемый файл → Обычный файл
0
orte/orted/pmix/pmix_server_gen.c
Исполняемый файл → Обычный файл
0
orte/orted/pmix/pmix_server_gen.c
Исполняемый файл → Обычный файл
0
orte/orted/pmix/pmix_server_internal.h
Исполняемый файл → Обычный файл
0
orte/orted/pmix/pmix_server_internal.h
Исполняемый файл → Обычный файл
0
orte/test/system/pmixtool.c
Исполняемый файл → Обычный файл
0
orte/test/system/pmixtool.c
Исполняемый файл → Обычный файл
@ -113,19 +113,18 @@ static int orte_create_dir(char *directory)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Construct the fullpath to the session directory
|
* Construct the fullpath to the session directory - it
|
||||||
|
* will consist of "ompi.<hostname>.<pid>"
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
orte_session_dir_get_name(char **fulldirpath,
|
orte_session_dir_get_name(char **fulldirpath,
|
||||||
char **return_prefix, /* This will come back as the valid tmp dir */
|
char **return_prefix, /* This will come back as the valid tmp dir */
|
||||||
char **return_frontend,
|
char **return_frontend,
|
||||||
char *hostid,
|
char *hostid,
|
||||||
char *batchid,
|
|
||||||
orte_process_name_t *proc) {
|
orte_process_name_t *proc) {
|
||||||
char *hostname = NULL,
|
char *hostname = NULL,
|
||||||
*batchname = NULL,
|
*batchname = NULL,
|
||||||
*sessions = NULL,
|
*sessions = NULL,
|
||||||
*user = NULL,
|
|
||||||
*prefix = NULL,
|
*prefix = NULL,
|
||||||
*frontend = NULL,
|
*frontend = NULL,
|
||||||
*jobfam = NULL,
|
*jobfam = NULL,
|
||||||
@ -134,15 +133,10 @@ orte_session_dir_get_name(char **fulldirpath,
|
|||||||
bool prefix_provided = false;
|
bool prefix_provided = false;
|
||||||
int exit_status = ORTE_SUCCESS;
|
int exit_status = ORTE_SUCCESS;
|
||||||
size_t len;
|
size_t len;
|
||||||
int uid;
|
|
||||||
|
|
||||||
/* Ensure that system info is set */
|
/* Ensure that system info is set */
|
||||||
orte_proc_info();
|
orte_proc_info();
|
||||||
|
|
||||||
/* get the name of the user */
|
|
||||||
uid = getuid();
|
|
||||||
asprintf(&user, "%d", uid);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* set the 'hostname'
|
* set the 'hostname'
|
||||||
*/
|
*/
|
||||||
@ -160,24 +154,12 @@ orte_session_dir_get_name(char **fulldirpath,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* construct the frontend of the session directory*/
|
||||||
* set the 'batchid'
|
|
||||||
*/
|
|
||||||
if (NULL != batchid)
|
|
||||||
batchname = strdup(batchid);
|
|
||||||
else
|
|
||||||
batchname = strdup("0");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* get the front part of the session directory
|
|
||||||
* Will look something like:
|
|
||||||
* openmpi-sessions-USERNAME@HOSTNAME_BATCHID
|
|
||||||
*/
|
|
||||||
if (NULL != orte_process_info.top_session_dir) {
|
if (NULL != orte_process_info.top_session_dir) {
|
||||||
frontend = strdup(orte_process_info.top_session_dir);
|
frontend = strdup(orte_process_info.top_session_dir);
|
||||||
}
|
}
|
||||||
else { /* If not set then construct it */
|
else { /* If not set then construct it */
|
||||||
if (0 > asprintf(&frontend, "openmpi-sessions-%s@%s_%s", user, hostname, batchname)) {
|
if (0 > asprintf(&frontend, "ompi.%s.%lu", hostname, (unsigned long)orte_process_info.pid)) {
|
||||||
ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);
|
ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);
|
||||||
exit_status = ORTE_ERR_OUT_OF_RESOURCE;
|
exit_status = ORTE_ERR_OUT_OF_RESOURCE;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -325,19 +307,30 @@ orte_session_dir_get_name(char **fulldirpath,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if(NULL != hostname)
|
if(NULL != hostname) {
|
||||||
free(hostname);
|
free(hostname);
|
||||||
if(NULL != batchname)
|
}
|
||||||
|
if(NULL != batchname) {
|
||||||
free(batchname);
|
free(batchname);
|
||||||
if(NULL != sessions)
|
}
|
||||||
|
if(NULL != sessions) {
|
||||||
free(sessions);
|
free(sessions);
|
||||||
if(NULL != user)
|
}
|
||||||
free(user);
|
if (NULL != prefix) {
|
||||||
if (NULL != prefix) free(prefix);
|
free(prefix);
|
||||||
if (NULL != frontend) free(frontend);
|
}
|
||||||
if (NULL != jobfam) free(jobfam);
|
if (NULL != frontend) {
|
||||||
if (NULL != job) free(job);
|
free(frontend);
|
||||||
if (NULL != vpidstr) free(vpidstr);
|
}
|
||||||
|
if (NULL != jobfam) {
|
||||||
|
free(jobfam);
|
||||||
|
}
|
||||||
|
if (NULL != job) {
|
||||||
|
free(job);
|
||||||
|
}
|
||||||
|
if (NULL != vpidstr) {
|
||||||
|
free(vpidstr);
|
||||||
|
}
|
||||||
|
|
||||||
return exit_status;
|
return exit_status;
|
||||||
}
|
}
|
||||||
@ -347,7 +340,7 @@ orte_session_dir_get_name(char **fulldirpath,
|
|||||||
*/
|
*/
|
||||||
int orte_session_dir(bool create,
|
int orte_session_dir(bool create,
|
||||||
char *prefix, char *hostid,
|
char *prefix, char *hostid,
|
||||||
char *batchid, orte_process_name_t *proc)
|
orte_process_name_t *proc)
|
||||||
{
|
{
|
||||||
char *fulldirpath = NULL,
|
char *fulldirpath = NULL,
|
||||||
*frontend = NULL,
|
*frontend = NULL,
|
||||||
@ -367,7 +360,7 @@ int orte_session_dir(bool create,
|
|||||||
&local_prefix,
|
&local_prefix,
|
||||||
&frontend,
|
&frontend,
|
||||||
hostid,
|
hostid,
|
||||||
batchid, proc))) {
|
proc))) {
|
||||||
if (ORTE_ERR_FATAL == rc) {
|
if (ORTE_ERR_FATAL == rc) {
|
||||||
/* this indicates we should abort quietly */
|
/* this indicates we should abort quietly */
|
||||||
rc = ORTE_ERR_SILENT;
|
rc = ORTE_ERR_SILENT;
|
||||||
|
@ -121,7 +121,7 @@ BEGIN_C_DECLS
|
|||||||
* "false") or created (if create is "true").
|
* "false") or created (if create is "true").
|
||||||
*/
|
*/
|
||||||
ORTE_DECLSPEC int orte_session_dir(bool create, char *prefix, char *hostid,
|
ORTE_DECLSPEC int orte_session_dir(bool create, char *prefix, char *hostid,
|
||||||
char *batchid, orte_process_name_t *proc);
|
orte_process_name_t *proc);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Construct the session directory name from the input parameters.
|
* Construct the session directory name from the input parameters.
|
||||||
@ -131,7 +131,6 @@ ORTE_DECLSPEC int orte_session_dir_get_name(char **fulldirpath,
|
|||||||
char **prfx,
|
char **prfx,
|
||||||
char **frontend,
|
char **frontend,
|
||||||
char *hostid,
|
char *hostid,
|
||||||
char *batchid,
|
|
||||||
orte_process_name_t *proc);
|
orte_process_name_t *proc);
|
||||||
|
|
||||||
/** The orte_session_dir_finalize() function performs a cleanup of the
|
/** The orte_session_dir_finalize() function performs a cleanup of the
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user