selftests: memcg: fix compilation
authorMichal Koutný <mkoutny@suse.com>
Wed, 18 May 2022 16:18:55 +0000 (18:18 +0200)
committerakpm <akpm@linux-foundation.org>
Fri, 27 May 2022 16:33:44 +0000 (09:33 -0700)
Patch series "memcontrol selftests fixups", v2.

Flushing the patches to make memcontrol selftests check the events
behavior we had consensus about (test_memcg_low fails).

(test_memcg_reclaim, test_memcg_swap_max fail for me now but it's present
even before the refactoring.)

The two bigger changes are:
- adjustment of the protected values to make tests succeed with the given
  tolerance,
- both test_memcg_low and test_memcg_min check protection of memory in
  populated cgroups (actually as per Documentation/admin-guide/cgroup-v2.rst
  memory.min should not apply to empty cgroups, which is not the case
  currently. Therefore I unified tests with the populated case in order to to
  bring more broken tests).

This patch (of 5):

This fixes mis-applied changes from commit 72b1e03aa725 ("cgroup: account
for memory_localevents in test_memcg_oom_group_leaf_events()").

Link: https://lkml.kernel.org/r/20220518161859.21565-1-mkoutny@suse.com
Link: https://lkml.kernel.org/r/20220518161859.21565-2-mkoutny@suse.com
Signed-off-by: Michal Koutný <mkoutny@suse.com>
Reviewed-by: David Vernet <void@manifault.com>
Acked-by: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Richard Palethorpe <rpalethorpe@suse.de>
Cc: Shakeel Butt <shakeelb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/cgroup/test_memcontrol.c

index 44a974e..9b82134 100644 (file)
@@ -1241,7 +1241,16 @@ static int test_memcg_oom_group_leaf_events(const char *root)
        if (cg_read_key_long(child, "memory.events", "oom_kill ") <= 0)
                goto cleanup;
 
-       if (cg_read_key_long(parent, "memory.events", "oom_kill ") <= 0)
+       parent_oom_events = cg_read_key_long(
+                       parent, "memory.events", "oom_kill ");
+       /*
+        * If memory_localevents is not enabled (the default), the parent should
+        * count OOM events in its children groups. Otherwise, it should not
+        * have observed any events.
+        */
+       if (has_localevents && parent_oom_events != 0)
+               goto cleanup;
+       else if (!has_localevents && parent_oom_events <= 0)
                goto cleanup;
 
        ret = KSFT_PASS;
@@ -1349,20 +1358,14 @@ static int test_memcg_oom_group_score_events(const char *root)
        if (!cg_run(memcg, alloc_anon, (void *)MB(100)))
                goto cleanup;
 
-       parent_oom_events = cg_read_key_long(
-                       parent, "memory.events", "oom_kill ");
-       /*
-        * If memory_localevents is not enabled (the default), the parent should
-        * count OOM events in its children groups. Otherwise, it should not
-        * have observed any events.
-        */
-       if ((has_localevents && parent_oom_events == 0) ||
-            parent_oom_events > 0)
-               ret = KSFT_PASS;
+       if (cg_read_key_long(memcg, "memory.events", "oom_kill ") != 3)
+               goto cleanup;
 
        if (kill(safe_pid, SIGKILL))
                goto cleanup;
 
+       ret = KSFT_PASS;
+
 cleanup:
        if (memcg)
                cg_destroy(memcg);