diff --git a/src/plugins/core_spec/cray/core_spec_cray.c b/src/plugins/core_spec/cray/core_spec_cray.c index 9208563943ef3b0354170e3ecab2ea1bbf33fab2..628ea65453da20dd18ea56ce1ac6e29dbd7d8c69 100644 --- a/src/plugins/core_spec/cray/core_spec_cray.c +++ b/src/plugins/core_spec/cray/core_spec_cray.c @@ -114,10 +114,10 @@ extern int fini(void) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_set(int core_count) +extern int core_spec_p_set(uint64_t cont_id, uint16_t core_count) { #if _DEBUG - info("core_spec_p_set(%d)", core_count); + info("core_spec_p_set(%"PRIu64") to %u", cont_id, core_count); #endif return SLURM_SUCCESS; } @@ -127,10 +127,10 @@ extern int core_spec_p_set(int core_count) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_clear(int core_count) +extern int core_spec_p_clear(uint64_t cont_id) { #if _DEBUG - info("core_spec_p_clear(%d)", core_count); + info("core_spec_p_clear(%"PRIu64")", cont_id); #endif return SLURM_SUCCESS; } diff --git a/src/plugins/core_spec/none/core_spec_none.c b/src/plugins/core_spec/none/core_spec_none.c index 9f07b3795353f767fb8244c2a56dc2cb1b2dbf06..4878c727d291067bd8f9902dfd23ba16ca657844 100644 --- a/src/plugins/core_spec/none/core_spec_none.c +++ b/src/plugins/core_spec/none/core_spec_none.c @@ -112,10 +112,10 @@ extern int fini(void) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_set(int core_count) +extern int core_spec_p_set(uint64_t cont_id, uint16_t core_count) { #if _DEBUG - info("core_spec_p_set(%d)", core_count); + info("core_spec_p_set(%"PRIu64") to %u", cont_id, core_count); #endif return SLURM_SUCCESS; } @@ -125,10 +125,10 @@ extern int core_spec_p_set(int core_count) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_clear(int core_count) +extern int core_spec_p_clear(uint64_t cont_id) { #if _DEBUG - info("core_spec_p_clear(%d)", core_count); + info("core_spec_p_clear(%"PRIu64")", cont_id); #endif return SLURM_SUCCESS; } diff --git a/src/slurmd/common/core_spec_plugin.c b/src/slurmd/common/core_spec_plugin.c index 19d620dfcfec8d266f8995e96c9d2fc5b3b0eda3..bac0384bd2b2bf8d95f5a578a1362f5322aeb0fc 100644 --- a/src/slurmd/common/core_spec_plugin.c +++ b/src/slurmd/common/core_spec_plugin.c @@ -46,8 +46,8 @@ typedef struct core_spec_ops { - int (*core_spec_p_set) (uint16_t count); - int (*core_spec_p_clear) (uint16_t count); + int (*core_spec_p_set) (uint64_t cont_id, uint16_t count); + int (*core_spec_p_clear) (uint64_t cont_id); int (*core_spec_p_suspend) (uint64_t cont_id); int (*core_spec_p_resume) (uint64_t cont_id); } core_spec_ops_t; @@ -173,7 +173,7 @@ done: * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_set(uint16_t count) +extern int core_spec_g_set(uint64_t cont_id, uint16_t core_count) { int i, rc = SLURM_SUCCESS; @@ -182,7 +182,7 @@ extern int core_spec_g_set(uint16_t count) for (i = 0; ((i < g_core_spec_context_num) && (rc == SLURM_SUCCESS)); i++) { - rc = (*(ops[i].core_spec_p_set))(count); + rc = (*(ops[i].core_spec_p_set))(cont_id, core_count); } return rc; @@ -193,7 +193,7 @@ extern int core_spec_g_set(uint16_t count) * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_clear(uint16_t count) +extern int core_spec_g_clear(uint64_t cont_id) { int i, rc = SLURM_SUCCESS; @@ -202,7 +202,7 @@ extern int core_spec_g_clear(uint16_t count) for (i = 0; ((i < g_core_spec_context_num) && (rc == SLURM_SUCCESS)); i++) { - rc = (*(ops[i].core_spec_p_clear))(count); + rc = (*(ops[i].core_spec_p_clear))(cont_id); } return rc; diff --git a/src/slurmd/common/core_spec_plugin.h b/src/slurmd/common/core_spec_plugin.h index 3dfd05819ef9234e8b914761fc7dd0410c7d2889..2bf2dbdf4a511e025ecfe5f056b0622294f8f6bc 100644 --- a/src/slurmd/common/core_spec_plugin.h +++ b/src/slurmd/common/core_spec_plugin.h @@ -62,13 +62,13 @@ extern int core_spec_g_fini(void); * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_set(uint16_t count); +extern int core_spec_g_set(uint64_t cont_id, uint16_t core_count); /* * Clear specialized cores at job termination * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_clear(uint16_t count); +extern int core_spec_g_clear(uint64_t cont_id); /* * Reset specialized cores at job suspend diff --git a/src/slurmd/slurmd/req.c b/src/slurmd/slurmd/req.c index 38ecce735ef6cf275930ee3b7e81d0c0f3bca652..25001aea4a6aa8e36e6358a22979c5a4d5a4bc44 100644 --- a/src/slurmd/slurmd/req.c +++ b/src/slurmd/slurmd/req.c @@ -1124,7 +1124,7 @@ _rpc_launch_tasks(slurm_msg_t *msg) if (container_g_create(req->job_id)) error("container_g_create(%u): %m", req->job_id); - if (core_spec_g_set(req->job_core_spec)) + if (core_spec_g_set(0, req->job_core_spec)) error("core_spec_g_set(%u): %m", req->job_id); memset(&job_env, 0, sizeof(job_env_t)); @@ -1584,7 +1584,7 @@ _rpc_batch_job(slurm_msg_t *msg, bool new_msg) req->job_id, req->step_id, req->uid); debug3("_rpc_batch_job: call to _forkexec_slurmstepd"); - if (core_spec_g_set(req->job_core_spec)) + if (core_spec_g_set(0, req->job_core_spec)) error("core_spec_g_set(%u): %m", req->job_id); rc = _forkexec_slurmstepd(LAUNCH_BATCH_JOB, (void *)req, cli, NULL, (hostset_t)NULL); diff --git a/src/slurmd/slurmstepd/mgr.c b/src/slurmd/slurmstepd/mgr.c index 12522f2ff6291e168003d4f45fce3c2b5aba938e..bfae2426ff16386ab750516e1ffadf659c901980 100644 --- a/src/slurmd/slurmstepd/mgr.c +++ b/src/slurmd/slurmstepd/mgr.c @@ -106,6 +106,7 @@ #include "src/slurmd/slurmd/slurmd.h" +#include "src/slurmd/common/core_spec_plugin.h" #include "src/slurmd/common/job_container_plugin.h" #include "src/slurmd/common/setproctitle.h" #include "src/slurmd/common/proctrack.h" @@ -966,7 +967,8 @@ job_manager(stepd_step_rec_t *job) /* * Preload plugins. */ - if ((switch_init() != SLURM_SUCCESS) || + if ((core_spec_g_init()!= SLURM_SUCCESS) || + (switch_init() != SLURM_SUCCESS) || (slurmd_task_init() != SLURM_SUCCESS) || (slurm_proctrack_init() != SLURM_SUCCESS) || (checkpoint_init(ckpt_type) != SLURM_SUCCESS) || diff --git a/src/slurmd/slurmstepd/slurmstepd.c b/src/slurmd/slurmstepd/slurmstepd.c index f2faee57d91038e478222cabbf6d9ddec1ba89a2..b6d347118370fedf7dd94f07947d681d2b85de25 100644 --- a/src/slurmd/slurmstepd/slurmstepd.c +++ b/src/slurmd/slurmstepd/slurmstepd.c @@ -145,7 +145,6 @@ main (int argc, char *argv[]) } _send_ok_to_slurmd(STDOUT_FILENO); - (void) core_spec_g_init(); /* Fancy way of closing stdout that keeps STDOUT_FILENO from being * allocated to any random file. The slurmd already opened /dev/null