From e12acfe6dd58deb28b8aa7eacaa0fb1a1e9a4c35 Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Wed, 5 Feb 2014 15:08:59 -0800
Subject: [PATCH] core_spec plugin changes

change the core_spec_g_set and clear functions to take container
ID as an argument
---
 src/plugins/core_spec/cray/core_spec_cray.c |  8 ++++----
 src/plugins/core_spec/none/core_spec_none.c |  8 ++++----
 src/slurmd/common/core_spec_plugin.c        | 12 ++++++------
 src/slurmd/common/core_spec_plugin.h        |  4 ++--
 src/slurmd/slurmd/req.c                     |  4 ++--
 src/slurmd/slurmstepd/mgr.c                 |  4 +++-
 src/slurmd/slurmstepd/slurmstepd.c          |  1 -
 7 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/src/plugins/core_spec/cray/core_spec_cray.c b/src/plugins/core_spec/cray/core_spec_cray.c
index 9208563943e..628ea65453d 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 9f07b379535..4878c727d29 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 19d620dfcfe..bac0384bd2b 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 3dfd05819ef..2bf2dbdf4a5 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 38ecce735ef..25001aea4a6 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 12522f2ff62..bfae2426ff1 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 f2faee57d91..b6d34711837 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
-- 
GitLab