mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-04 04:06:26 +00:00
selftests: cgroup: skip test_cgcore_lesser_ns_open when cgroup2 mounted without nsdelegate
[ Upstream commit4793cb599b
] The test case test_cgcore_lesser_ns_open only tasks effect when cgroup2 is mounted with "nsdelegate" mount option. If it misses this option, or is remounted without "nsdelegate", the test case will fail. For example, running bpf/test_cgroup_storage first, and then run cgroup/test_core will fail on test_cgcore_lesser_ns_open. Skip it if "nsdelegate" is not detected in cgroup2 mount options. Fixes:bf35a7879f
("selftests: cgroup: Test open-time cgroup namespace usage for migration checks") Signed-off-by: Tianchen Ding <dtcccc@linux.alibaba.com> Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com> Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
f560c18dd6
commit
40f3e9adbe
@ -195,10 +195,10 @@ int cg_write_numeric(const char *cgroup, const char *control, long value)
|
||||
return cg_write(cgroup, control, buf);
|
||||
}
|
||||
|
||||
int cg_find_unified_root(char *root, size_t len)
|
||||
int cg_find_unified_root(char *root, size_t len, bool *nsdelegate)
|
||||
{
|
||||
char buf[10 * PAGE_SIZE];
|
||||
char *fs, *mount, *type;
|
||||
char *fs, *mount, *type, *options;
|
||||
const char delim[] = "\n\t ";
|
||||
|
||||
if (read_text("/proc/self/mounts", buf, sizeof(buf)) <= 0)
|
||||
@ -211,12 +211,14 @@ int cg_find_unified_root(char *root, size_t len)
|
||||
for (fs = strtok(buf, delim); fs; fs = strtok(NULL, delim)) {
|
||||
mount = strtok(NULL, delim);
|
||||
type = strtok(NULL, delim);
|
||||
strtok(NULL, delim);
|
||||
options = strtok(NULL, delim);
|
||||
strtok(NULL, delim);
|
||||
strtok(NULL, delim);
|
||||
|
||||
if (strcmp(type, "cgroup2") == 0) {
|
||||
strncpy(root, mount, len);
|
||||
if (nsdelegate)
|
||||
*nsdelegate = !!strstr(options, "nsdelegate");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ static inline int values_close(long a, long b, int err)
|
||||
return abs(a - b) <= (a + b) / 100 * err;
|
||||
}
|
||||
|
||||
extern int cg_find_unified_root(char *root, size_t len);
|
||||
extern int cg_find_unified_root(char *root, size_t len, bool *nsdelegate);
|
||||
extern char *cg_name(const char *root, const char *name);
|
||||
extern char *cg_name_indexed(const char *root, const char *name, int index);
|
||||
extern char *cg_control(const char *cgroup, const char *control);
|
||||
|
@ -18,6 +18,8 @@
|
||||
#include "../kselftest.h"
|
||||
#include "cgroup_util.h"
|
||||
|
||||
static bool nsdelegate;
|
||||
|
||||
static int touch_anon(char *buf, size_t size)
|
||||
{
|
||||
int fd;
|
||||
@ -775,6 +777,9 @@ static int test_cgcore_lesser_ns_open(const char *root)
|
||||
pid_t pid;
|
||||
int status;
|
||||
|
||||
if (!nsdelegate)
|
||||
return KSFT_SKIP;
|
||||
|
||||
cg_test_a = cg_name(root, "cg_test_a");
|
||||
cg_test_b = cg_name(root, "cg_test_b");
|
||||
|
||||
@ -862,7 +867,7 @@ int main(int argc, char *argv[])
|
||||
char root[PATH_MAX];
|
||||
int i, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), &nsdelegate))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
|
||||
if (cg_read_strstr(root, "cgroup.subtree_control", "memory"))
|
||||
|
@ -700,7 +700,7 @@ int main(int argc, char *argv[])
|
||||
char root[PATH_MAX];
|
||||
int i, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
|
||||
if (cg_read_strstr(root, "cgroup.subtree_control", "cpu"))
|
||||
|
@ -249,7 +249,7 @@ int main(int argc, char *argv[])
|
||||
char root[PATH_MAX];
|
||||
int i, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
|
||||
if (cg_read_strstr(root, "cgroup.subtree_control", "cpuset"))
|
||||
|
@ -827,7 +827,7 @@ int main(int argc, char *argv[])
|
||||
char root[PATH_MAX];
|
||||
int i, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
for (i = 0; i < ARRAY_SIZE(tests); i++) {
|
||||
switch (tests[i].fn(root)) {
|
||||
|
@ -214,7 +214,7 @@ int main(int argc, char **argv)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
|
||||
switch (test_hugetlb_memcg(root)) {
|
||||
|
@ -276,7 +276,7 @@ int main(int argc, char *argv[])
|
||||
char root[PATH_MAX];
|
||||
int i, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
for (i = 0; i < ARRAY_SIZE(tests); i++) {
|
||||
switch (tests[i].fn(root)) {
|
||||
|
@ -420,7 +420,7 @@ int main(int argc, char **argv)
|
||||
char root[PATH_MAX];
|
||||
int i, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
|
||||
/*
|
||||
|
@ -1314,7 +1314,7 @@ int main(int argc, char **argv)
|
||||
char root[PATH_MAX];
|
||||
int i, proc_status, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
|
||||
/*
|
||||
|
@ -324,7 +324,7 @@ int main(int argc, char **argv)
|
||||
char root[PATH_MAX];
|
||||
int i, ret = EXIT_SUCCESS;
|
||||
|
||||
if (cg_find_unified_root(root, sizeof(root)))
|
||||
if (cg_find_unified_root(root, sizeof(root), NULL))
|
||||
ksft_exit_skip("cgroup v2 isn't mounted\n");
|
||||
|
||||
if (!zswap_configured())
|
||||
|
Loading…
Reference in New Issue
Block a user