public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Muhammad Usama Anjum <usama.anjum@collabora.com>
To: Tianchen Ding <dtcccc@linux.alibaba.com>, linux-kernel@vger.kernel.org
Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>,
	Tejun Heo <tj@kernel.org>, Zefan Li <lizefan.x@bytedance.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Shuah Khan <shuah@kernel.org>,
	cgroups@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH] selftests: cgroup: skip test_cgcore_lesser_ns_open when cgroup2 mounted without nsdelegate
Date: Sat, 30 Mar 2024 01:20:10 +0500	[thread overview]
Message-ID: <ca7a1547-5bb0-40d7-a77a-9ca6c14fd6f2@collabora.com> (raw)
In-Reply-To: <20240327024437.3196-1-dtcccc@linux.alibaba.com>

On 3/27/24 7:44 AM, Tianchen Ding wrote:
> 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: bf35a7879f1d ("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>

> ---
>  tools/testing/selftests/cgroup/cgroup_util.c        | 8 +++++---
>  tools/testing/selftests/cgroup/cgroup_util.h        | 2 +-
>  tools/testing/selftests/cgroup/test_core.c          | 7 ++++++-
>  tools/testing/selftests/cgroup/test_cpu.c           | 2 +-
>  tools/testing/selftests/cgroup/test_cpuset.c        | 2 +-
>  tools/testing/selftests/cgroup/test_freezer.c       | 2 +-
>  tools/testing/selftests/cgroup/test_hugetlb_memcg.c | 2 +-
>  tools/testing/selftests/cgroup/test_kill.c          | 2 +-
>  tools/testing/selftests/cgroup/test_kmem.c          | 2 +-
>  tools/testing/selftests/cgroup/test_memcontrol.c    | 2 +-
>  tools/testing/selftests/cgroup/test_zswap.c         | 2 +-
>  11 files changed, 20 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/testing/selftests/cgroup/cgroup_util.c b/tools/testing/selftests/cgroup/cgroup_util.c
> index 0340d4ca8f51..432db923bced 100644
> --- a/tools/testing/selftests/cgroup/cgroup_util.c
> +++ b/tools/testing/selftests/cgroup/cgroup_util.c
> @@ -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;
>  		}
>  	}
> diff --git a/tools/testing/selftests/cgroup/cgroup_util.h b/tools/testing/selftests/cgroup/cgroup_util.h
> index 1df7f202214a..89e8519fb271 100644
> --- a/tools/testing/selftests/cgroup/cgroup_util.h
> +++ b/tools/testing/selftests/cgroup/cgroup_util.h
> @@ -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);
> diff --git a/tools/testing/selftests/cgroup/test_core.c b/tools/testing/selftests/cgroup/test_core.c
> index 80aa6b2373b9..a5672a91d273 100644
> --- a/tools/testing/selftests/cgroup/test_core.c
> +++ b/tools/testing/selftests/cgroup/test_core.c
> @@ -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"))
> diff --git a/tools/testing/selftests/cgroup/test_cpu.c b/tools/testing/selftests/cgroup/test_cpu.c
> index 24020a2c68dc..186bf96f6a28 100644
> --- a/tools/testing/selftests/cgroup/test_cpu.c
> +++ b/tools/testing/selftests/cgroup/test_cpu.c
> @@ -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"))
> diff --git a/tools/testing/selftests/cgroup/test_cpuset.c b/tools/testing/selftests/cgroup/test_cpuset.c
> index b061ed1e05b4..4034d14ba69a 100644
> --- a/tools/testing/selftests/cgroup/test_cpuset.c
> +++ b/tools/testing/selftests/cgroup/test_cpuset.c
> @@ -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"))
> diff --git a/tools/testing/selftests/cgroup/test_freezer.c b/tools/testing/selftests/cgroup/test_freezer.c
> index 8845353aca53..8730645d363a 100644
> --- a/tools/testing/selftests/cgroup/test_freezer.c
> +++ b/tools/testing/selftests/cgroup/test_freezer.c
> @@ -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)) {
> diff --git a/tools/testing/selftests/cgroup/test_hugetlb_memcg.c b/tools/testing/selftests/cgroup/test_hugetlb_memcg.c
> index f0fefeb4cc24..856f9508ea56 100644
> --- a/tools/testing/selftests/cgroup/test_hugetlb_memcg.c
> +++ b/tools/testing/selftests/cgroup/test_hugetlb_memcg.c
> @@ -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)) {
> diff --git a/tools/testing/selftests/cgroup/test_kill.c b/tools/testing/selftests/cgroup/test_kill.c
> index 6153690319c9..0e5bb6c7307a 100644
> --- a/tools/testing/selftests/cgroup/test_kill.c
> +++ b/tools/testing/selftests/cgroup/test_kill.c
> @@ -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)) {
> diff --git a/tools/testing/selftests/cgroup/test_kmem.c b/tools/testing/selftests/cgroup/test_kmem.c
> index c82f974b85c9..137506db0312 100644
> --- a/tools/testing/selftests/cgroup/test_kmem.c
> +++ b/tools/testing/selftests/cgroup/test_kmem.c
> @@ -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");
>  
>  	/*
> diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c
> index c7c9572003a8..b462416b3806 100644
> --- a/tools/testing/selftests/cgroup/test_memcontrol.c
> +++ b/tools/testing/selftests/cgroup/test_memcontrol.c
> @@ -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");
>  
>  	/*
> diff --git a/tools/testing/selftests/cgroup/test_zswap.c b/tools/testing/selftests/cgroup/test_zswap.c
> index f0e488ed90d8..ef7f39545317 100644
> --- a/tools/testing/selftests/cgroup/test_zswap.c
> +++ b/tools/testing/selftests/cgroup/test_zswap.c
> @@ -440,7 +440,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())

-- 
BR,
Muhammad Usama Anjum

  reply	other threads:[~2024-03-29 20:19 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-27  2:44 [PATCH] selftests: cgroup: skip test_cgcore_lesser_ns_open when cgroup2 mounted without nsdelegate Tianchen Ding
2024-03-29 20:20 ` Muhammad Usama Anjum [this message]
2024-04-03 19:42 ` Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ca7a1547-5bb0-40d7-a77a-9ca6c14fd6f2@collabora.com \
    --to=usama.anjum@collabora.com \
    --cc=cgroups@vger.kernel.org \
    --cc=dtcccc@linux.alibaba.com \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=lizefan.x@bytedance.com \
    --cc=shuah@kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox