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
Fixes: 29750f71a9b4 ("hugetlb_cgroup: add hugetlb_cgroup reservation tests")
Signed-off-by: Qiliang Yuan <[email protected]>
---
tools/testing/selftests/mm/charge_reserved_hugetlb.sh | 8 ++++++++
tools/testing/selftests/mm/hugetlb_reparenting_test.sh | 10 ++++++++++
2 files changed, 18 insertions(+)
diff --git a/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
b/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
index a1cfd3a349db6..65065b1377b24 100755
--- a/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
+++ b/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
@@ -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}')
diff --git a/tools/testing/selftests/mm/hugetlb_reparenting_test.sh
b/tools/testing/selftests/mm/hugetlb_reparenting_test.sh
index 95f517c3bd167..811912ae7d975 100755
--- a/tools/testing/selftests/mm/hugetlb_reparenting_test.sh
+++ b/tools/testing/selftests/mm/hugetlb_reparenting_test.sh
@@ -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}')
---
base-commit: 437a7e839def0f505277022622fc59a8b071d6cf
change-id: 20261016-bug-selftests-mm-hugetlb-cgroup2-skip-7fc0316486f2
Best regards,
--
Qiliang Yuan <[email protected]>