Hi,
This is a follow-up from https://groups.google.com/g/slurm-users/c/JI3UkbCtj3U, but as I could not find any progress, I am opening a new thread.
When setting IgnoreSystemd=yes in cgroup.conf, I have the error:
error: common_file_write_content: unable to open '/sys/fs/cgroup/system.slice/cgroup.subtree_control' for writing: No such file or directory error: Cannot enable cpuset in /sys/fs/cgroup/system.slice/cgroup.subtree_control: No such file or directory error: common_file_write_content: unable to open '/sys/fs/cgroup/system.slice/cgroup.subtree_control' for writing: No such file or directory error: Cannot enable memory in /sys/fs/cgroup/system.slice/cgroup.subtree_control: No such file or directory error: common_file_write_content: unable to open '/sys/fs/cgroup/system.slice/cgroup.subtree_control' for writing: No such file or directory error: Cannot enable cpu in /sys/fs/cgroup/system.slice/cgroup.subtree_control: No such file or directory error: Could not create scope directory /sys/fs/cgroup/system.slice/slurmstepd.scope: No such file or directory error: Couldn't load specified plugin name for cgroup/v2: Plugin init() callback failed error: cannot create cgroup context for cgroup/v2 error: Unable to initialize cgroup plugin error: slurmd initialization failed
I wrote a patch that solves this issue:
--- cgroup_v2.c.orig 2024-09-02 13:18:21.376312875 +0200 +++ cgroup_v2.c 2024-09-02 13:22:00.516986953 +0200 @@ -43,6 +43,7 @@ #include <sys/inotify.h> #include <poll.h> #include <unistd.h> +#include <libgen.h>
#include "slurm/slurm.h" #include "slurm/slurm_errno.h" @@ -743,11 +744,33 @@ return SLURM_SUCCESS; } +static int _mkdir(const char *path, mode_t mode) +{ + int rc; + char *dir, *pdir; + + dir = strdup(path); + if (dir == NULL) { + return ENOMEM; + } + pdir = dirname(dir); + if (strcmp(pdir, path) != 0) { + rc = _mkdir(pdir, mode); + if (rc && (errno != EEXIST)) { + free(dir); + return rc; + } + } + rc = mkdir(path, mode); + free(dir); + return rc; +} + static int _init_new_scope(char *scope_path) { int rc;
- rc = mkdir(scope_path, 0755); + rc = _mkdir(scope_path, 0755); if (rc && (errno != EEXIST)) { error("Could not create scope directory %s: %m", scope_path); return SLURM_ERROR;
This patch concerns the file src/plugins/cgroup/v2/cgroup_v2.c. Am I missing something ?
Cheers, Honoré.