get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2218973/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2218973,
    "url": "http://patchwork.ozlabs.org/api/patches/2218973/?format=api",
    "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=api",
        "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=api",
        "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=api",
            "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": []
}