{"id":2218973,"url":"http://patchwork.ozlabs.org/api/patches/2218973/?format=json","web_url":"http://patchwork.ozlabs.org/project/ltp/patch/20260402082546.3245433-1-somadas1@linux.ibm.com/","project":{"id":59,"url":"http://patchwork.ozlabs.org/api/projects/59/?format=json","name":"Linux Test Project development","link_name":"ltp","list_id":"ltp.lists.linux.it","list_email":"ltp@lists.linux.it","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260402082546.3245433-1-somadas1@linux.ibm.com>","list_archive_url":null,"date":"2026-04-02T08:25:46","name":"cgroup: make regression test compatible with cgroup v2","commit_ref":null,"pull_url":null,"state":"needs-review-ack","archived":false,"hash":"27a418ed50fe5fe07a6f033230b5e9b92e402328","submitter":{"id":93035,"url":"http://patchwork.ozlabs.org/api/people/93035/?format=json","name":"Soma Das","email":"somadas1@linux.ibm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/ltp/patch/20260402082546.3245433-1-somadas1@linux.ibm.com/mbox/","series":[{"id":498448,"url":"http://patchwork.ozlabs.org/api/series/498448/?format=json","web_url":"http://patchwork.ozlabs.org/project/ltp/list/?series=498448","date":"2026-04-02T08:25:46","name":"cgroup: make regression test compatible with cgroup v2","version":1,"mbox":"http://patchwork.ozlabs.org/series/498448/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2218973/comments/","check":"success","checks":"http://patchwork.ozlabs.org/api/patches/2218973/checks/","tags":{},"related":[],"headers":{"Return-Path":"<ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it>","X-Original-To":["incoming@patchwork.ozlabs.org","ltp@lists.linux.it"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","ltp@picard.linux.it"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=llFICLkh;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it\n (client-ip=213.254.12.146; helo=picard.linux.it;\n envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it;\n receiver=patchwork.ozlabs.org)"],"Received":["from picard.linux.it (picard.linux.it [213.254.12.146])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmZ7t05d2z1yFv\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 02 Apr 2026 19:02:01 +1100 (AEDT)","from picard.linux.it (localhost [IPv6:::1])\n\tby picard.linux.it (Postfix) with ESMTP id 8BDF93E2F3D\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  2 Apr 2026 10:01:58 +0200 (CEST)","from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [217.194.8.7])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature ECDSA (secp384r1))\n (No client certificate requested)\n by picard.linux.it (Postfix) with ESMTPS id CF05B3E14A5\n for <ltp@lists.linux.it>; Thu,  2 Apr 2026 10:01:54 +0200 (CEST)","from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com\n [148.163.158.5])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 2231E2009D1\n for <ltp@lists.linux.it>; Thu,  2 Apr 2026 10:01:53 +0200 (CEST)","from pps.filterd (m0360072.ppops.net [127.0.0.1])\n by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 631JfnG43676159\n for <ltp@lists.linux.it>; Thu, 2 Apr 2026 08:01:52 GMT","from ppma13.dal12v.mail.ibm.com\n (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221])\n by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4d66msaxx6-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)\n for <ltp@lists.linux.it>; Thu, 02 Apr 2026 08:01:52 +0000 (GMT)","from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1])\n by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id\n 6326xBFY030995\n for <ltp@lists.linux.it>; Thu, 2 Apr 2026 08:01:51 GMT","from smtprelay07.dal12v.mail.ibm.com ([172.16.1.9])\n by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4d6uhk11pj-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)\n for <ltp@lists.linux.it>; Thu, 02 Apr 2026 08:01:51 +0000","from smtpav01.wdc07v.mail.ibm.com (smtpav01.wdc07v.mail.ibm.com\n [10.39.53.228])\n by smtprelay07.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 63281opB30147104\n (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Thu, 2 Apr 2026 08:01:50 GMT","from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 546AB58066;\n Thu,  2 Apr 2026 08:01:50 +0000 (GMT)","from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 098EB58059;\n Thu,  2 Apr 2026 08:01:50 +0000 (GMT)","from ktes.isst.tadn.ibm.com (unknown [9.5.15.16])\n by smtpav01.wdc07v.mail.ibm.com (Postfix) with ESMTP;\n Thu,  2 Apr 2026 08:01:49 +0000 (GMT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n :content-transfer-encoding:date:from:message-id:mime-version\n :subject:to; s=pp1; bh=44IEsK0xl6dEPwRaCYRS57YdhHRCqoFfL4EZ7WUBi\n 6I=; b=llFICLkhFyXuWZhyAhpPNv6FuwKBpLkUMdMI//8/BVziBZrFtRcPJzKA2\n 6w31e+uZTUQAaflDHtIlhbicMc/DnheRs++f9Ef5svhQxvBhbT8i4tPSZAqg267E\n Vq55+yzVXJWSqbMUST+zKpBakEaDmky6N2J8fMfay0wd8HeQZ8sVYQlfv/kRIh5a\n qQbHu8sDxbQbYi1Vl+OJ7czHdxTTSza4tAl+CTQ9zp7mlaA95tpkuZJNmFLCH1L9\n L8QqiBnwgsC3gf7q8cG2Myks9J1t/AtsxvwVkCOuNYxL4Q1AnXl50PSQtWam8wuz\n dMuogNDYKmHNDjdn7z9jJrq9HT/dQ==","From":"Soma Das <somadas1@linux.ibm.com>","To":"ltp@lists.linux.it","Date":"Thu,  2 Apr 2026 08:25:46 +0000","Message-Id":"<20260402082546.3245433-1-somadas1@linux.ibm.com>","X-Mailer":"git-send-email 2.39.1","MIME-Version":"1.0","X-TM-AS-GCONF":"00","X-Authority-Analysis":"v=2.4 cv=J6enLQnS c=1 sm=1 tr=0 ts=69ce2270 cx=c_pps\n a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17\n a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22\n a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=omOdbC7AAAAA:8\n a=rH-MzyGww2OwHRWN6wsA:9","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDAyMDA2OCBTYWx0ZWRfXy/d14GDxnTjs\n ZTQknnwMgSuXlMurCzfYRrqn5fIHDcDsaeOWJ8QzyOlqc5SsMl16Zzjc66MFWSAjp5nUl4xTatd\n i54pCGvNEGiNepwJBPKy9APyeMiBfdHwXdvQjg0FqNOhioBAPBNgxlS4Bv+dqn87biKvX5dKxxV\n T0b/FX6913ANOxQ6sMWtGaxLUEL9Yg9Y/lhhC8NQIwOdAH/Gg7RBXPH16Yy3TnvpIdKJGPTz7ck\n l/3OYAQ2QEL9PABWAop6wHwigPCfR6qt8qb+l8xFOlhnSN0oSU+4HbtdHnv1JSkmXRTVVCMJRKx\n LwFdUkj4T63Qp4bmpxHk4/ai3W1fz+ZEO5zElighVr6h5+nblGXAUVUp93EzPfzSJ7RJZ9HfC/l\n Hygaaxm6Xs58C8OLXzIyTNHhzVB6lhdzgSaZjRWW6iUBqv6FyKo1pg/mlrpd/t7rVAHD6QJUbnL\n SgR9T886f0OKY4dhndg==","X-Proofpoint-GUID":"tdTGmb4deXM0VpmtfM8UJUWgiHjj7y4w","X-Proofpoint-ORIG-GUID":"tdTGmb4deXM0VpmtfM8UJUWgiHjj7y4w","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-02_01,2026-04-02_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n suspectscore=0 clxscore=1015 adultscore=0 priorityscore=1501 bulkscore=0\n phishscore=0 malwarescore=0 lowpriorityscore=0 spamscore=0 impostorscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2604020068","X-Spam-Status":"No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID,\n SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=disabled version=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on in-7.smtp.seeweb.it","X-Virus-Scanned":"clamav-milter 1.0.9 at in-7.smtp.seeweb.it","X-Virus-Status":"Clean","Subject":"[LTP] [PATCH] cgroup: make regression test compatible with cgroup v2","X-BeenThere":"ltp@lists.linux.it","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"Linux Test Project <ltp.lists.linux.it>","List-Unsubscribe":"<https://lists.linux.it/options/ltp>,\n <mailto:ltp-request@lists.linux.it?subject=unsubscribe>","List-Archive":"<http://lists.linux.it/pipermail/ltp/>","List-Post":"<mailto:ltp@lists.linux.it>","List-Help":"<mailto:ltp-request@lists.linux.it?subject=help>","List-Subscribe":"<https://lists.linux.it/listinfo/ltp>,\n <mailto:ltp-request@lists.linux.it?subject=subscribe>","Cc":"somadas1@linux.ibm.com","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it","Sender":"\"ltp\" <ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it>"},"content":"On kernels >= 5.8, cgroup v2 is mounted by default, causing\ncgroup v1 mount operations in the regression tests to fail.\n\nAdd kernel version detection to skip v1-specific tests on\nsystems where cgroup v2 is active by default. Also fix the\ncleanup function to handle cases where umount fails gracefully\nusing retry logic and lazy unmount fallback.\n\nSigned-off-by: Soma Das <somadas1@linux.ibm.com>\n---\n .../cgroup/cgroup_regression_test.sh          | 215 +++++++++++++-----\n 1 file changed, 160 insertions(+), 55 deletions(-)","diff":"diff --git a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh\nindex a91c400f8..86b79f424 100755\n--- a/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh\n+++ b/testcases/kernel/controllers/cgroup/cgroup_regression_test.sh\n@@ -2,8 +2,7 @@\n # SPDX-License-Identifier: GPL-2.0-or-later\n # Copyright (c) 2019-2022 Petr Vorel <pvorel@suse.cz>\n # Copyright (c) 2009 FUJITSU LIMITED\n-# Author: Li Zefan <lizf@cn.fujitsu.com>\n-\n+# Author: Li Zefan <lizf@cn.fujitsu.com> \n TST_TESTFUNC=test\n TST_SETUP=do_setup\n TST_CLEANUP=do_cleanup\n@@ -20,6 +19,13 @@ do_setup()\n \t\ttst_brk TCONF ignored \"Kernel does not support for control groups; skipping testcases\";\n \tfi\n \n+\tlocal kver=$(uname -r)\n+\tif kernel_supports_v2_by_default; then\n+\t\ttst_res TINFO \"Kernel $kver: version >= 5.8 (mounts cgroup v2 by default)\"\n+\telse\n+\t\ttst_res TINFO \"Kernel $kver: version < 5.8 (no default v2 support)\"\n+\tfi\n+\n \tdmesg -c > /dev/null\n \tNR_BUG=`dmesg | grep -c \"kernel BUG\"`\n \tNR_NULL=`dmesg | grep -c \"kernel NULL pointer dereference\"`\n@@ -29,11 +35,28 @@ do_setup()\n \n do_cleanup()\n {\n-\tif mountpoint -q cgroup/; then\n-\t\tfind cgroup/ -maxdepth 1 -depth -exec rmdir {} +\n-\t\tumount cgroup/\n-\t\trmdir cgroup\n-\tfi\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n+\tlocal attempts=0\n+\t\n+\twhile [ $attempts -lt 5 ]; do\n+\t\tif ! mount | grep -q \"on $cgroup_mount type\"; then\n+\t\t\tbreak\n+\t\tfi\n+\t\t\n+\t\tfind \"$cgroup_mount\" -maxdepth 1 -depth -exec rmdir {} + 2>/dev/null || true\n+\t\t\n+\t\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n+\t\tsleep 1\n+\t\t\n+\t\tif mount | grep -q \"on $cgroup_mount type\"; then\n+\t\t\tfuser -km \"$cgroup_mount\" 2>/dev/null || true\n+\t\t\tsleep 1\n+\t\tfi\n+\t\t\n+\t\tattempts=$((attempts+1))\n+\tdone\n+\t\n+\trmdir \"$cgroup_mount\" 2>/dev/null || true\n }\n \n check_kernel_bug()\n@@ -78,6 +101,24 @@ check_kernel_bug()\n \treturn 1\n }\n \n+kernel_version()\n+{\n+\tuname -r | cut -d. -f1,2\n+}\n+\n+kernel_supports_v2_by_default()\n+{\n+\tlocal kver=$(uname -r | cut -d. -f1,2)\n+\tlocal major=$(echo \"$kver\" | cut -d. -f1)\n+\tlocal minor=$(echo \"$kver\" | cut -d. -f2)\n+\t\n+\t# Kernel 5.8+ mounts cgroup v2 by default\n+\tif [ $major -gt 5 ] || ([ $major -eq 5 ] && [ $minor -ge 8 ]); then\n+\t\treturn 0\n+\tfi\n+\treturn 1\n+}\n+\n #---------------------------------------------------------------------------\n # Bug:    There was a race when keeping forking processes and at the same\n #         time cat /cgroup/tasks (should be the very first time to read\n@@ -90,20 +131,54 @@ check_kernel_bug()\n #---------------------------------------------------------------------------\n test1()\n {\n+\tif mount | grep -q \"type cgroup2\"; then\n+\t\ttst_res TCONF \"cgroup v2 already active - cannot mount v1 on this kernel\"\n+\t\treturn\n+\tfi\n+\n \tcgroup_regression_fork_processes &\n \tsleep 1\n \n-\tmount -t cgroup -o none,name=foo cgroup cgroup/\n+\tmount -t cgroup -o none,name=foo cgroup \"$PWD/cgroup\"\n \tif [ $? -ne 0 ]; then\n \t\ttst_res TFAIL \"failed to mount cgroup filesystem\"\n \t\tkill -TERM $!\n \t\treturn\n \tfi\n-\tcat cgroup/tasks > /dev/null\n+\tcat \"$PWD/cgroup/tasks\" > /dev/null\n \n \tkill -TERM $!\n \twait $! 2>/dev/null\n-\tumount cgroup/\n+\tsleep 2\n+\tkillall -9 cgroup_regression_fork_processes 2>/dev/null || true\n+\tsleep 1\n+\tsync\n+\t\n+\tlocal attempts=0\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n+\t\n+\twhile [ $attempts -lt 5 ]; do\n+\t\tif ! mount | grep -q \"on $cgroup_mount type cgroup\"; then\n+\t\t\tbreak\n+\t\tfi\n+\t\t\n+\t\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n+\t\tsleep 1\n+\t\t\n+\t\tif mount | grep -q \"on $cgroup_mount type cgroup\"; then\n+\t\t\tfuser -km \"$cgroup_mount\" 2>/dev/null || true\n+\t\t\tsleep 1\n+\t\tfi\n+\t\t\n+\t\tattempts=$((attempts+1))\n+\tdone\n+\tsync\n+\t\n+\tif mount | grep -q \"on $cgroup_mount type cgroup\"; then\n+\t\ttst_res TFAIL \"Failed to unmount cgroup\"\n+\t\treturn\n+\tfi\n+\t\n \tcheck_kernel_bug\n }\n \n@@ -115,31 +190,39 @@ test1()\n #---------------------------------------------------------------------------\n test2()\n {\n+\tif mount | grep -q \"type cgroup2\"; then\n+\t\ttst_res TCONF \"cgroup v2 already active - cannot mount v1 on this kernel\"\n+\t\treturn\n+\tfi\n+\n \tlocal val1\n \tlocal val2\n-\tlocal cgroup_version\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n \n-\tcgroup_require \"memory\"\n-\tcgroup_version=$(cgroup_get_version \"memory\")\n-\tif [ \"$cgroup_version\" = \"2\" ]; then\n-\t\ttst_res TCONF \"This test requires cgroup v1, but system is using cgroup v2\"\n-\t\tcgroup_cleanup\n+\tfuser -km \"$cgroup_mount\" 2>/dev/null || true\n+\tgrep cgroup /proc/self/mounts | awk '{print $2}' | while read m; do\n+\t\tumount -lf \"$m\" 2>/dev/null || true\n+\tdone\n+\tsleep 1\n+\n+\tif mount | grep -q \"on $cgroup_mount type\"; then\n+\t\ttst_res TFAIL \"Failed to clean up $cgroup_mount before mount attempt\"\n \t\treturn\n \tfi\n \n-\tmount -t cgroup -o none,name=foo cgroup cgroup/\n+\tmount -t cgroup -o none,name=foo cgroup \"$cgroup_mount\"\n \tif [ $? -ne 0 ]; then\n \t\ttst_res TFAIL \"Failed to mount cgroup filesystem\"\n \t\treturn\n \tfi\n \n-\techo 0 > cgroup/notify_on_release\n-\tmkdir cgroup/0\n-\tval1=`cat cgroup/0/notify_on_release`\n+\techo 0 > \"$cgroup_mount/notify_on_release\"\n+\tmkdir \"$cgroup_mount/0\"\n+\tval1=`cat \"$cgroup_mount/0/notify_on_release\"`\n \n-\techo 1 > cgroup/notify_on_release\n-\tmkdir cgroup/1\n-\tval2=`cat cgroup/1/notify_on_release`\n+\techo 1 > \"$cgroup_mount/notify_on_release\"\n+\tmkdir \"$cgroup_mount/1\"\n+\tval2=`cat \"$cgroup_mount/1/notify_on_release\"`\n \n \tif [ $val1 -ne 0 -o $val2 -ne 1 ]; then\n \t\ttst_res TFAIL \"wrong notify_on_release value\"\n@@ -147,8 +230,8 @@ test2()\n \t\ttst_res TPASS \"notify_on_release is inherited\"\n \tfi\n \n-\trmdir cgroup/0 cgroup/1\n-\ttst_umount $PWD/cgroup\n+\trmdir \"$cgroup_mount/0\" \"$cgroup_mount/1\" 2>/dev/null || true\n+\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n }\n \n #---------------------------------------------------------------------------\n@@ -201,6 +284,11 @@ test4()\n {\n \tlocal lines\n \n+\tif mount | grep -q \"type cgroup2\"; then\n+\t\ttst_res TCONF \"cgroup v2 already active - skipping v1 test\"\n+\t\treturn\n+\tfi\n+\n \tif [ ! -e /proc/lockdep ]; then\n \t\ttst_res TCONF \"CONFIG_LOCKDEP is not enabled\"\n \t\treturn\n@@ -213,10 +301,11 @@ test4()\n \t\treturn\n \tfi\n \n-\tmount -t cgroup -o none,name=foo cgroup cgroup/\n-\tmkdir cgroup/0\n-\trmdir cgroup/0\n-\ttst_umount $PWD/cgroup\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n+\tmount -t cgroup -o none,name=foo cgroup \"$cgroup_mount\"\n+\tmkdir \"$cgroup_mount/0\"\n+\trmdir \"$cgroup_mount/0\"\n+\ttst_umount \"$cgroup_mount\"\n \n \tif dmesg | grep -q \"MAX_LOCKDEP_SUBCLASSES too low\"; then\n \t\ttst_res TFAIL \"lockdep BUG was found\"\n@@ -235,6 +324,11 @@ test4()\n #---------------------------------------------------------------------------\n test5()\n {\n+\tif mount | grep -q \"type cgroup2\"; then\n+\t\ttst_res TCONF \"cgroup v2 already active - skipping v1 test\"\n+\t\treturn\n+\tfi\n+\n \tcgroup_regression_5_1.sh &\n \tlocal pid1=$!\n \tcgroup_regression_5_2.sh &\n@@ -245,10 +339,16 @@ test5()\n \twait $pid1 2>/dev/null\n \twait $pid2 2>/dev/null\n \n-\tmount -t cgroup none cgroup 2> /dev/null\n-\tmkdir cgroup/0\n-\trmdir cgroup/0\n-\ttst_umount $PWD/cgroup\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n+\tif mount | grep -q \"on $cgroup_mount type\"; then\n+\t\tumount -l \"$cgroup_mount\" 2>/dev/null || true\n+\t\tsleep 1\n+\tfi\n+\n+\tmount -t cgroup none \"$cgroup_mount\" 2> /dev/null\n+\tmkdir \"$cgroup_mount/0\"\n+\trmdir \"$cgroup_mount/0\"\n+\ttst_umount \"$cgroup_mount\"\n \tcheck_kernel_bug\n }\n \n@@ -272,7 +372,9 @@ test6()\n \twait $pid1 2>/dev/null\n \twait $pid2 2>/dev/null\n \n-\tumount cgroup/ 2> /dev/null\n+\t# Use absolute path with force unmount\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n+\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n \tcheck_kernel_bug\n }\n \n@@ -288,11 +390,7 @@ test_7_1()\n {\n \tlocal subsys=$1\n \tlocal subsys_path\n-\t# we should be careful to select a $subsys_path which is related to\n-\t# cgroup only: if cgroup debugging is enabled a 'debug' $subsys\n-\t# could be passed here as params and this will lead to ambiguity and\n-\t# errors when grepping simply for 'debug' in /proc/mounts since we'll\n-\t# find also /sys/kernel/debug. Helper takes care of this.\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n \n \tcgroup_require \"$subsys\"\n \tsubsys_path=$(cgroup_get_mountpoint \"$subsys\")\n@@ -301,14 +399,11 @@ test_7_1()\n \tsleep 100 < $subsys_path/0 &\t# add refcnt to this dir\n \trmdir $subsys_path/0\n \n-\t# remount with new subsystems added\n-\t# since 2.6.28, this remount will fail\n-\n \tif [ \"$subsys_path\" = \"cgroup\" ]; then\n-\t\tmount -t cgroup -o remount xxx cgroup/ 2> /dev/null\n+\t\tmount -t cgroup -o remount xxx \"$cgroup_mount\" 2> /dev/null\n \t\tkill -TERM $!\n \t\twait $! 2>/dev/null\n-\t\tumount cgroup/\n+\t\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n \tfi\n \n \tcgroup_cleanup\n@@ -317,23 +412,27 @@ test_7_1()\n test_7_2()\n {\n \tlocal subsys=$1\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n \n-\tmount -t cgroup -o none,name=foo cgroup cgroup/\n+\tif mount | grep -q \"on $cgroup_mount type\"; then\n+\t\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n+\t\tsleep 1\n+\tfi\n+\n+\tmount -t cgroup -o none,name=foo cgroup \"$cgroup_mount\"\n \tif [ $? -ne 0 ]; then\n \t\ttst_res TFAIL \"failed to mount cgroup\"\n \t\treturn\n \tfi\n \n-\tmkdir cgroup/0\n-\tsleep 100 < cgroup/0 &\t# add refcnt to this dir\n-\trmdir cgroup/0\n+\tmkdir \"$cgroup_mount/0\"\n+\tsleep 100 < \"$cgroup_mount/0\" &\t# add refcnt to this dir\n+\trmdir \"$cgroup_mount/0\"\n \n-\t# remount with some subsystems removed\n-\t# since 2.6.28, this remount will fail\n-\tmount -t cgroup -o remount,$subsys xxx cgroup/ 2> /dev/null\n+\tmount -t cgroup -o remount,$subsys xxx \"$cgroup_mount\" 2> /dev/null\n \tkill -TERM $!\n \twait $! 2>/dev/null\n-\tumount cgroup/\n+\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n \n \tgrep -q -w \"cpu\" /proc/cgroups\n \tif [ $? -ne 0 -o ! -e /proc/sched_debug ]; then\n@@ -379,17 +478,23 @@ test7()\n #---------------------------------------------------------------------------\n test8()\n {\n-\tmount -t cgroup -o none,name=foo cgroup cgroup/\n+\tif mount | grep -q \"type cgroup2\"; then\n+\t\ttst_res TCONF \"cgroup v2 already active - skipping v1 test\"\n+\t\treturn\n+\tfi\n+\n+\tlocal cgroup_mount=\"$PWD/cgroup\"\n+\tmount -t cgroup -o none,name=foo cgroup \"$cgroup_mount\"\n \tif [ $? -ne 0 ]; then\n \t\ttst_res TFAIL \"failed to mount cgroup filesystem\"\n \t\treturn\n \tfi\n \n-\tif cgroup_regression_getdelays -C cgroup/tasks > /dev/null 2>&1; then\n+\tif cgroup_regression_getdelays -C \"$cgroup_mount/tasks\" > /dev/null 2>&1; then\n \t\ttst_res TFAIL \"should have failed to get cgroupstat of tasks file\"\n \tfi\n \n-\tumount cgroup/\n+\tumount -f \"$cgroup_mount\" 2>/dev/null || umount -l \"$cgroup_mount\" 2>/dev/null || true\n \tcheck_kernel_bug\n }\n \n","prefixes":[]}