Merge pull request #22498 from yuwata/cgroup-threaded-mode

cgroup: ignore error in attaching process when threaded mode is used
This commit is contained in:
Luca Boccassi
2022-02-16 18:59:06 +00:00
committed by GitHub
4 changed files with 35 additions and 0 deletions
+24
View File
@@ -1688,6 +1688,30 @@ int cg_slice_to_path(const char *unit, char **ret) {
return 0;
}
int cg_is_threaded(const char *controller, const char *path) {
_cleanup_free_ char *fs = NULL, *contents = NULL;
_cleanup_strv_free_ char **v = NULL;
int r;
r = cg_get_path(controller, path, "cgroup.type", &fs);
if (r < 0)
return r;
r = read_full_virtual_file(fs, &contents, NULL);
if (r == -ENOENT)
return false; /* Assume no. */
if (r < 0)
return r;
v = strv_split(contents, NULL);
if (!v)
return -ENOMEM;
/* If the cgroup is in the threaded mode, it contains "threaded".
* If one of the parents or siblings is in the threaded mode, it may contain "invalid". */
return strv_contains(v, "threaded") || strv_contains(v, "invalid");
}
int cg_set_attribute(const char *controller, const char *path, const char *attribute, const char *value) {
_cleanup_free_ char *p = NULL;
int r;
+2
View File
@@ -205,6 +205,8 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path);
int cg_rmdir(const char *controller, const char *path);
int cg_is_threaded(const char *controller, const char *path);
typedef enum {
CG_KEY_MODE_GRACEFUL = 1 << 0,
} CGroupKeyMode;