From 5caef359b51ef4babf7769d5dcd19f4e3993bd1f Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Tue, 19 Apr 2011 19:34:09 -0700
Subject: [PATCH] proctrack: conversion of container ID to 64 bit

This continues the conversion of the cont_id from 32bit to 64bit,
 * updated slurm_container_find() to return u64 in order to match type of container ID;
 * updated slurm_proctrack_ops() to match the update of u32 -> u64 container ID in the
   slurm_container_xxx() functions,
 * miscellaneous type conversions from/to u64,
 * using "%"PRIu64"" for printing 64 bit.
Patch 01_proctrack-64-bit-conversion.diff from Gerrit Renker
---
 src/plugins/proctrack/aix/proctrack_aix.c       |  8 ++++----
 src/plugins/proctrack/cgroup/proctrack_cgroup.c |  2 +-
 src/plugins/proctrack/lua/proctrack_lua.c       |  2 +-
 src/plugins/proctrack/pgid/proctrack_pgid.c     |  2 +-
 src/plugins/proctrack/rms/proctrack_rms.c       |  4 ++--
 src/slurmd/common/proctrack.c                   | 14 +++++++-------
 src/slurmd/common/proctrack.h                   |  2 +-
 7 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/plugins/proctrack/aix/proctrack_aix.c b/src/plugins/proctrack/aix/proctrack_aix.c
index a9ed404a366..c7d467c1531 100644
--- a/src/plugins/proctrack/aix/proctrack_aix.c
+++ b/src/plugins/proctrack/aix/proctrack_aix.c
@@ -203,8 +203,8 @@ slurm_container_plugin_get_pids(uint64_t cont_id, pid_t **pids, int *npids)
 	}
 
 	if (np == -1) {
-		error("proctrack_get_pids(AIX) for container %u failed: %m",
-		      cont_id);
+		error("proctrack_get_pids(AIX) for container %"PRIu64" "
+		      "failed: %m", cont_id);
 		xfree(p);
 		*pids = NULL;
 		*npids = 0;
@@ -254,12 +254,12 @@ slurm_container_plugin_wait(uint64_t cont_id)
 			int i;
 			pid_t *pids = NULL;
 			int npids = 0;
-			error("Container %u is still not empty", cont_id);
+			error("Container %"PRIu64" is still not empty", cont_id);
 
 			slurm_container_plugin_get_pids(cont_id, &pids, &npids);
 			if (npids > 0) {
 				for (i = 0; i < npids; i++) {
-					verbose("  Container %u has pid %d",
+					verbose("Container %"PRIu64" has pid %d",
 						cont_id, pids[i]);
 				}
 				xfree(pids);
diff --git a/src/plugins/proctrack/cgroup/proctrack_cgroup.c b/src/plugins/proctrack/cgroup/proctrack_cgroup.c
index adc9d6d0f9a..2409a5ac9c1 100644
--- a/src/plugins/proctrack/cgroup/proctrack_cgroup.c
+++ b/src/plugins/proctrack/cgroup/proctrack_cgroup.c
@@ -474,7 +474,7 @@ extern int slurm_container_plugin_signal (uint64_t id, int signal)
 		/* do not kill slurmstepd (it should not be part
 		 * of the list, but just to not forget about that ;))
 		 */
-		if (pids[i] == id)
+		if (pids[i] == (pid_t)id)
 			continue;
 
 		/* only signal slurm tasks unless signal is SIGKILL */
diff --git a/src/plugins/proctrack/lua/proctrack_lua.c b/src/plugins/proctrack/lua/proctrack_lua.c
index 323a15290ad..866f80a07fc 100644
--- a/src/plugins/proctrack/lua/proctrack_lua.c
+++ b/src/plugins/proctrack/lua/proctrack_lua.c
@@ -353,7 +353,7 @@ int slurm_container_plugin_create (slurmd_job_t *job)
 	}
 
 	id = lua_tonumber (L, -1);
-	job->cont_id = id;
+	job->cont_id = (uint64_t) id;
 	info ("job->cont_id = %"PRIu64" (%.0f)", job->cont_id, id);
 	lua_pop (L, -1);
 
diff --git a/src/plugins/proctrack/pgid/proctrack_pgid.c b/src/plugins/proctrack/pgid/proctrack_pgid.c
index 97e5a60529e..41ea043f323 100644
--- a/src/plugins/proctrack/pgid/proctrack_pgid.c
+++ b/src/plugins/proctrack/pgid/proctrack_pgid.c
@@ -129,7 +129,7 @@ extern int slurm_container_plugin_signal  ( uint64_t id, int signal )
 	if (!id)	/* no container ID */
 		return ESRCH;
 
-	if (id == getpid() || id == getpgid(0)) {
+	if (pid == getpid() || pid == getpgid(0)) {
 		error("slurm_signal_container would kill caller!");
 		return ESRCH;
 	}
diff --git a/src/plugins/proctrack/rms/proctrack_rms.c b/src/plugins/proctrack/rms/proctrack_rms.c
index 386cf5e054a..c9ea4d45121 100644
--- a/src/plugins/proctrack/rms/proctrack_rms.c
+++ b/src/plugins/proctrack/rms/proctrack_rms.c
@@ -168,7 +168,7 @@ extern int slurm_container_plugin_signal  (uint64_t id, int signal)
  */
 extern int slurm_container_plugin_destroy (uint64_t id)
 {
-	debug2("proctrack/rms: destroying container %u", id);
+	debug2("proctrack/rms: destroying container %"PRIu64"", id);
 	if (id == 0)
 		return SLURM_SUCCESS;
 
@@ -217,7 +217,7 @@ slurm_container_plugin_wait(uint64_t cont_id)
 		if (delay < 120) {
 			delay *= 2;
 		} else {
-			error("Unable to destroy container %u", cont_id);
+			error("Unable to destroy container %"PRIu64"", cont_id);
 		}
 	}
 
diff --git a/src/slurmd/common/proctrack.c b/src/slurmd/common/proctrack.c
index a669b268b36..a442c519b4b 100644
--- a/src/slurmd/common/proctrack.c
+++ b/src/slurmd/common/proctrack.c
@@ -51,12 +51,12 @@
 typedef struct slurm_proctrack_ops {
 	int              (*create)    (slurmd_job_t * job);
 	int              (*add)       (slurmd_job_t * job, pid_t pid);
-	int              (*signal)    (uint32_t id, int signal);
-	int              (*destroy)   (uint32_t id);
-	 uint32_t        (*find_cont) (pid_t pid);
-	 bool            (*has_pid)   (uint32_t id, pid_t pid);
-	int              (*wait)      (uint32_t id);
-	int              (*get_pids)  (uint32_t id, pid_t ** pids, int *npids);
+	int              (*signal)    (uint64_t id, int signal);
+	int              (*destroy)   (uint64_t id);
+	uint64_t         (*find_cont) (pid_t pid);
+	bool             (*has_pid)   (uint64_t id, pid_t pid);
+	int              (*wait)      (uint64_t id);
+	int              (*get_pids)  (uint64_t id, pid_t ** pids, int *npids);
 } slurm_proctrack_ops_t;
 
 
@@ -317,7 +317,7 @@ extern int slurm_container_destroy(uint64_t cont_id)
  *
  * Returns zero if no container found for the given pid.
  */
-extern uint32_t slurm_container_find(pid_t pid)
+extern uint64_t slurm_container_find(pid_t pid)
 {
 	if (slurm_proctrack_init() < 0)
 		return SLURM_ERROR;
diff --git a/src/slurmd/common/proctrack.h b/src/slurmd/common/proctrack.h
index 793f3647540..4895306ebb2 100644
--- a/src/slurmd/common/proctrack.h
+++ b/src/slurmd/common/proctrack.h
@@ -110,7 +110,7 @@ extern int slurm_container_destroy(uint64_t cont_id);
  *
  * Returns zero if no container found for the given pid.
  */
-extern uint32_t slurm_container_find(pid_t pid);
+extern uint64_t slurm_container_find(pid_t pid);
 
 /*
  * Return "true" if the container "cont_id" contains the process with
-- 
GitLab