mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
selftests/mm: skip hugetlb cgroup v2 tests without the needed controllers
With -cgroup-v2, charge_reserved_hugetlb.sh and
hugetlb_reparenting_test.sh mount a cgroup2 hierarchy on a temporary
directory when none is mounted and enable the hugetlb controller
(hugetlb_reparenting_test.sh also enables memory) in its
cgroup.subtree_control.
On a system that still binds these controllers to cgroup v1, they are not
available in the new hierarchy. Writing to cgroup.subtree_control fails
with ENOENT, "set -e" aborts the script, the test is reported as failed,
and the temporary cgroup2 mount is left behind.
Check cgroup.controllers first, and skip the test when a controller is
missing, after unmounting the hierarchy and removing the directory the
script created.
With hugetlb and memory bound to cgroup v1, per script:
before after
result fail skip
cgroup2 mounts left behind 1 0
Link: https://lore.kernel.org/20261016-bug-selftests-mm-hugetlb-cgroup2-skip-v1-1-7c78883a67b4@gmail.com
Fixes: 29750f71a9 ("hugetlb_cgroup: add hugetlb_cgroup reservation tests")
Signed-off-by: Qiliang Yuan <odys.yuan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Joshua Hahn <joshua.hahnjy@gmail.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Mina Almasry <almasrymina@google.com>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Oscar Salvador <osalvador@suse.de>
This commit is contained in:
parent
c82dba3183
commit
8730e622bf
|
|
@ -39,6 +39,14 @@ if [[ $cgroup2 ]]; then
|
|||
mount -t cgroup2 none $cgroup_path
|
||||
do_umount=1
|
||||
fi
|
||||
if ! grep -qw hugetlb $cgroup_path/cgroup.controllers; then
|
||||
echo "hugetlb controller not available in cgroup v2. Skipping..."
|
||||
if [[ $do_umount ]]; then
|
||||
umount $cgroup_path
|
||||
rmdir $cgroup_path
|
||||
fi
|
||||
exit $ksft_skip
|
||||
fi
|
||||
echo "+hugetlb" >$cgroup_path/cgroup.subtree_control
|
||||
else
|
||||
cgroup_path=$(mount -t cgroup | grep ",hugetlb" | awk '{print $3}')
|
||||
|
|
|
|||
|
|
@ -29,6 +29,16 @@ if [[ $cgroup2 ]]; then
|
|||
mount -t cgroup2 none $CGROUP_ROOT
|
||||
do_umount=1
|
||||
fi
|
||||
for ctrl in hugetlb memory; do
|
||||
if ! grep -qw $ctrl $CGROUP_ROOT/cgroup.controllers; then
|
||||
echo "$ctrl controller not available in cgroup v2. Skipping..."
|
||||
if [[ $do_umount ]]; then
|
||||
umount $CGROUP_ROOT
|
||||
rmdir $CGROUP_ROOT
|
||||
fi
|
||||
exit $ksft_skip
|
||||
fi
|
||||
done
|
||||
echo "+hugetlb +memory" >$CGROUP_ROOT/cgroup.subtree_control
|
||||
else
|
||||
CGROUP_ROOT=$(mount -t cgroup | grep ",hugetlb" | awk '{print $3}')
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user