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