From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5B2ACEE57DF for ; Mon, 11 Sep 2023 07:55:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C69566B017D; Mon, 11 Sep 2023 03:55:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BF1686B017E; Mon, 11 Sep 2023 03:55:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A1E4B6B017F; Mon, 11 Sep 2023 03:55:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 8B2B36B017D for ; Mon, 11 Sep 2023 03:55:20 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 5CD271408E0 for ; Mon, 11 Sep 2023 07:55:20 +0000 (UTC) X-FDA: 81223556400.10.63E05A4 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2116.outbound.protection.outlook.com [40.107.105.116]) by imf22.hostedemail.com (Postfix) with ESMTP id 4E6BCC0013 for ; Mon, 11 Sep 2023 07:55:17 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=nebius.com header.s=selector1 header.b=Lujzvkld; dmarc=pass (policy=reject) header.from=nebius.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf22.hostedemail.com: domain of zeil@nebius.com designates 40.107.105.116 as permitted sender) smtp.mailfrom=zeil@nebius.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694418917; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1DKyGwIj4jv7VDoNrsbW4MCGeMC+A7Fjxr12aryd/0k=; b=vPpuSf4Cve3nWuPZjQeMdGB2GE0Snd1TJN0hqekPynEF21wADaB4qGpjUpD7o1tJYjpZ8B +pT/R8M6tXpNhaFdl3NKvrg9DvjuvpELHHzkkPasjwYO9CeJi2oGkoIcxEWYS9xgoloZFL GghZmMcZFixY9p7ggGstmTqJ6JUdd8o= ARC-Authentication-Results: i=2; imf22.hostedemail.com; dkim=pass header.d=nebius.com header.s=selector1 header.b=Lujzvkld; dmarc=pass (policy=reject) header.from=nebius.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf22.hostedemail.com: domain of zeil@nebius.com designates 40.107.105.116 as permitted sender) smtp.mailfrom=zeil@nebius.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1694418917; a=rsa-sha256; cv=pass; b=cKyg92dhDcVDMHd/R/ccXgOMfTD3oJMXRmtw+ddbBMfnfxT8z8GKSb/mFWTaMe0g2NnAT6 l7K6oOQoWa3sQuzaOy/HkHk76U34D+tfbl672Y1GzVWiIdqLPxSsK3k6JfFY1glh4OldDD jxfjdYoyqySIZkNqTxF+vWXFbAsTiqM= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ENRBrncko2IZrJLySO5XTo5zpFNtPe0y1MbRN3POPmZkw+BAh6FuZTqoyLbtUEwRv46T4NhyFc1M6hHusnblqllcF7bdpm+YNziL1JQqEg6ddZS4ETEWp+gArg92HO/qqFN0LFPj84mcdxHDPge5WiJE0vPLOuORwBUXAiEegl48UilT7Mx70FaFdBrg1icgWr2s+ElrkqgPKU4+uSdPY+/YIyvOYYC4qTS5W8r+BEU2sc1LVM09ry/s97xxAnu7NelJjjyreM+y1Fx1khPzVQU2hE/pn3U2Svr/HcISybFH3MmaQgnA1a97vba3zIJXlWs7CR4aJaPB02/BH11kpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1DKyGwIj4jv7VDoNrsbW4MCGeMC+A7Fjxr12aryd/0k=; b=P3oS0xGEyG/aKRfJcALzD8HK+Vep6qP2TutsmjfZwY9nLU1WwZpwP0w6FK1ule0+cJP9VaCw669uMXuUgKe80i0Zy2Y+cA+X5lpVwGTamkBZJlHWv9fd3nI0qmUg8oC+bz1BT4bS4Cv152YHsfVuYauWaE3Dh7h/HqwRADSuxa8LHvDEZ6snLRiz9LbwFjA4gi3Vk/HUQutbyagb4O4pKoEpREq2rYFiWPyD+5lN97a6tzgE6pTxxqfMBVSx5KSSEBbA9CBwBxWHjZOQiQqvcjgplcNGbSJW6xKGfSB/rwmqxOgXb3K9K4Iqo6o1BoeOoV3txmCHOAUYOhEskaIdhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nebius.com; dmarc=pass action=none header.from=nebius.com; dkim=pass header.d=nebius.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nebius.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1DKyGwIj4jv7VDoNrsbW4MCGeMC+A7Fjxr12aryd/0k=; b=LujzvkldKVdvzkRN2XebIglZAKv450VcgxhrdZKRo/lHjfcSjBuehaMQAFJFZ2LzKKiPtMvBIS+yXuzP4ERRek9DutT5TGoEtx1qp4NKyY2JTDlW3hEpb84/MdsfcrJG//G7jsINTQhbC8PEyEs2Nz+kS6RQuzx2xjloGmBAsJPoohzvhasnIjSTn6W8A69dAj0Ab31gsSxpFGemRW6igDJbanyfF0NkFJMLz7m8mo2veVn6ZMQplqSqiCCufQaDwZLnRI66FSxjNfj9bacRGfXdjcDKd5+HuUTb0iMvk39CGJxNLsT97OU7ncoBjr/9YAI2Sq7eSZgycySwjLEOkw== Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:3a4::9) by DBAP190MB0840.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:1a2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.31; Mon, 11 Sep 2023 07:55:15 +0000 Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3]) by DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3%5]) with mapi id 15.20.6768.029; Mon, 11 Sep 2023 07:55:15 +0000 From: "Yakunin, Dmitry (Nebius)" To: "cgroups@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" CC: NB-Core Team , "tj@kernel.org" , "hannes@cmpxchg.org" , "mhocko@kernel.org" , "Yakunin, Dmitry (Nebius)" , Konstantin Khlebnikov , Andrey Ryabinin Subject: [RFC PATCH 1/3] cgroup: list all subsystem states in debugfs files Thread-Topic: [RFC PATCH 1/3] cgroup: list all subsystem states in debugfs files Thread-Index: AQHZ5IVMonqYoLV7B0qibYNmxbXARA== Date: Mon, 11 Sep 2023 07:55:15 +0000 Message-ID: <20230911075437.74027-2-zeil@nebius.com> References: <20230911075437.74027-1-zeil@nebius.com> In-Reply-To: <20230911075437.74027-1-zeil@nebius.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DU0P190MB1860:EE_|DBAP190MB0840:EE_ x-ms-office365-filtering-correlation-id: 1acaef6c-91e9-4e0d-90a1-08dbb29c6f21 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ppn0QukgfN6KAteDgq51Ije4yeAt6vGJHRWzQ5q8Z0BUtjnEiyJsRvQlmAqPzNK9GJDETRcFDmIUHs5b3BwK5ByKAs+Fr8f0ezF2EtU/9+3a0zJF4Ya1kIieQx4qExtqjH5nRP3xAHPiM0s7ewPKSwDG8uDPBdQsXbK4MV4Bij8WeVaI3tlyQIVakc2k+dPyoy3JKaA43AhlRMW7eoNyAk7VJtOIR9xcXoT7/lgVBJS7qxMYfCqRaOllsbzMRqKsBKXA3/D/5mspNYamjvWG6Ti9VMNr4NZELbIK8yA3UOcEAcvkfo4/elBBM7cM9YgWPqFnKXzmahaLPDtgGS7Mub489+XxgRB1b+YWKZQs1u7gjKLCPCRvZ7xi5Wrn4cG6Zj/+P4Livfwzi3wTi7BYnG1ZNEAgkSvYymn5tPV00vjBj26/Eokr7LXfS5gMm6v4+Nf05ZveMrWZvawYBKU+t7iNWIzXC0NYprdBRz0cGJXSBnif/JnmrbOiO4pMAcAgUDG8vtNRtYlFfv4TMIbuKQQg8lJ/QmqyjO7V61doGdr6ffTgRvVXNUOv0zWOlAVP+Oh4+sXdjnlJIbEooHrLDSL254lgu9fbc9dVnhvWk6o= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0P190MB1860.EURP190.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(396003)(366004)(346002)(39830400003)(451199024)(1800799009)(186009)(6486002)(71200400001)(6506007)(36756003)(86362001)(38100700002)(38070700005)(122000001)(26005)(2616005)(1076003)(2906002)(966005)(6512007)(478600001)(83380400001)(5660300002)(41300700001)(4326008)(76116006)(316002)(110136005)(8676002)(8936002)(66446008)(64756008)(54906003)(66476007)(66556008)(66946007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Uk1um9NzmTDYpWtZ8u9SzU9Y5/IznmX/vusa9tOa7sCYPmsJ89eb5Q5IZk?= =?iso-8859-1?Q?K+6AjWpAliUZMaIt4y5eqkfKJJ4+m5rRGPmb48MlsvvQMIPhVIH1J4b+R3?= =?iso-8859-1?Q?uQnbS/1E2s99GS2cC3WG9jCQ84YAw+OXkq1rVvH1VUUz94UwiDOpwB1ohY?= =?iso-8859-1?Q?eREBk5zl7nfznUtlVyhjrsCYnOrU/ch8wJKj4Ts3p5j7hVqQpsx6gVp5Id?= =?iso-8859-1?Q?nbaG/MLGF962Lys3pXtGIMH5nU7KMfd4PH+WbRytYKjdD5+hZxtfISdoRA?= =?iso-8859-1?Q?zhxIQWOdNhjS58qkiRoqgrjOE4ulboR0IPns4yHqFhp6+KvAj42qJSkx8L?= =?iso-8859-1?Q?eqWC+lwfWiw9fZn1umZ+zeCE81Njh7mqvk5Ta5yImLYtOfw096pSj4WR/5?= =?iso-8859-1?Q?xjJWIeZy61sKfC8UJBsNEkBgyji+xmDI+Qmw5qsbQefjGKLGxjNsQtWwvC?= =?iso-8859-1?Q?SuBrxd4e0Pmy562AxwncEVGh4/JGhfCHYiG+oAIaKKSm7hdS80CuM0n+Lb?= =?iso-8859-1?Q?xLWZUZwdanqFOctgfv3Kt2XEzFli7bSoYC2TGlJ8iAICmDKanzGGkfPOXF?= =?iso-8859-1?Q?hsCnXb/rAABz7deCl4Yfn0QA+FNGzsPLiJ3Or8NLCKQEDRsSJzqwykHNnP?= =?iso-8859-1?Q?24dnfjg6gDIBsVeroEtVyOFm7zc0aYBe+6icKj/MgqE7vytgCAP4fKOf/i?= =?iso-8859-1?Q?/IR1E8ae7S0csO9J9Gair59S9dIUX0pGA9iauzGkbOnaimfhqPPXlXNVHG?= =?iso-8859-1?Q?hhfVhpvPstLgiN7djmTvoNthFaMK2vIIUjGM53zhRRX061NohGnNlGCBpv?= =?iso-8859-1?Q?okawuSHCObEzzgNtZB7QGkn/LxndobC0UfjKZUeXuL+8zIERkYOiESuSHC?= =?iso-8859-1?Q?mVMOppcSyownRse26XbyEe6CtvG0IzE+JHIe9VjH7Ch2icOvy06qxhpGAA?= =?iso-8859-1?Q?A4KfcqKg8g/RuTBvocuS17GKKvLCzN7fi1d5/aK3n2PtXcwGLkAVV/n0me?= =?iso-8859-1?Q?LIq7odcZH6mAlWWh2x4EGrxM46yA80ZrN40+FXuokaWczw1M71hsmFq5yV?= =?iso-8859-1?Q?FApnMKyD225f2xxbj0mVW+Gjetm8h6A2qrWZloFOfHPxtNvZk3ZyhvbM1M?= =?iso-8859-1?Q?/I+MlkYXiomr2Vr8yT/HMmvbQb1PhNUdwj+QgZ1a09/jUTRKs4Vq0HHLCK?= =?iso-8859-1?Q?RxR2iOEF8ydd24/+PyaeaaAZhbPIUyueq3/QLzSsaPoEZD8ASbzf1oXmn1?= =?iso-8859-1?Q?xQGbeWux7HKJd+e7nEW1P44HfBVgty1FS6msXHumqJXPtjGI5OGc/LeLNA?= =?iso-8859-1?Q?qb3v4UfD7O9wseMFChOKELmwu7fqBbkOdiVvgiTRaMHCvN7jPGaecui86F?= =?iso-8859-1?Q?C3Xdv9DP69c4fYrZXSwHETUSAaRcgBh+kyWRHMR98RskZeZD/37Mcz/4JO?= =?iso-8859-1?Q?VLJ9EAHLGyXejEpU+m4T/ZSlM0HWh7rYpCtd9VtcpSd1n1bvpoSjsYs5ht?= =?iso-8859-1?Q?iw15SLJrSgKVGvzu2Yd6QhFvSipvVT7CybGNaFnLvLg2TO0+GaqQ60acxz?= =?iso-8859-1?Q?tveIQNN3WtuQ8MUDHb+vlzuCJZx9xIaMe85P5ctxax2RK/pPf077rzwIUs?= =?iso-8859-1?Q?w3jNTnKyR58I8=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nebius.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DU0P190MB1860.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 1acaef6c-91e9-4e0d-90a1-08dbb29c6f21 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2023 07:55:15.1918 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4eb23c52-f3a5-49bc-b555-0b061267a984 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: p3P2kjfGUyyP3F5sEc+FsRNrne79XP4BycDBWoowRaWzffu1QHnaqTTs7Baeq0TD X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAP190MB0840 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 4E6BCC0013 X-Stat-Signature: 9mk3a9w7odaxe1coc3wun75ot31ksjkj X-Rspam-User: X-HE-Tag: 1694418917-246655 X-HE-Meta: U2FsdGVkX19i+R2W6zwHCZkrhZWkzRVpvmhIc1daxrYyfLA7KTHO9R2l9d203F9/Fug8wVTCxqYk5iV9MMBM3B76fw8htY4LUKewZ/leD3UWU4WfaaRRsW5llBwDcfF+VGU/AH4/8m0FNUaYErdsJGZeNBsYKfBvt63LQCweKv2nrtbAli94aDpwQcgf1NQ7vMPBo2IUxZnQLn00t51t69EW0G+PeDz/dzDc7sVl1/fBpMvZ5yySsPXe+pa6mHzLMBSQiMyFIqmTjqWUnY3uFUHFkdrE0V/Lapj7H8aVl3W0GIR1OU3E3YqozWuCLRRgVeK9wqCTrQn3oYKSSuJtxloHJl7qLyEC83DJMVQI496qd6ep++zCppwG9KbrcMTqSpWrCnZCmYA7Ek24hfeU9zZM2Mxaj5k7PKNzYLpuAjG/VakOUcEiMJlPglHtkN91BdLUvGTMtVXQRdfGk40YaW1ooW7UD5pnnnRx3FID/CZG72yCEs33l1tza8IA9VRB9gXaMKdAVUFDZqjMth5aqkEKTlgBXmvHD5s7CV57nfQsVbtUvlbaWu9ziEAI3okoprU41vP1r0w7WY5tAyTx8Ms45Zaobh7f8WOQ4cRzeP3E1o1XGwRMmn2B2wHDPeBZJn13jSjRBvYFFxM6IHOrCuR/CdpFTwX9viFkIRVZoWjRXAULXzh2/QOnE37Lj2iwxMMmQO0A4ku35UxGktPEc7430MYJBQx4HY2Ra7dUp2NbhK158V8pAAjP9SXAj0afiBq5akkkwfXFRuFgipJrRnlgpqXuZkC/cC5GfpGCJMKrvUkkveGSSkj+GAR78PBb3QG5qzqeLMpjHDIvTkZyRsFE5UrPqgRATbogbkxXoDpcE2FiL4zRqw0PULG181NOKEi5MXiDq4ojGIRXYsnasR6Cs5Jpi+ze9S8N3mShReBPXQVcRYvnmTrLFz8KcIdTQKb686WMcSlXEyd5rlz /ESQoVBO xdsLbE34sbs1UdmvNMZ4mB1vyctdWjXfi0aw0PG5YAeoXXTHWF7X049lQgficP/LEcHd8FrjoHOFmX3+YQlQR7uiQEj6cAFn348tCAph0wpPpgqXBH6wj5Q9dNYdnepxMXwURVyBndxasDGQ5aVyxIbFiuSdqju1MBKbk3mPw2hxLQuLD0t4TWZfZAloUH+ChGPcTl+xe5ohW5Fw3/5t/k95ul+9Ma49AmQQI3AVuZUmEK3ImhqGICaICDc7MUqR4MCpO56VXjIuBhqDoeOCrylONLox8hBegwlkkkpgN/2u1Zx/jJnctKoAMuHnHi1QyvA9r82zf7eRdeVnBSikp/fdgCslGDjIu8GaHTyh6TYyBZ8CZlMdSjMPVn37HuLVzAKGI10TZH44j29lben9QY+S5VTbHmWh3b7IprSafNqh30VgfypUr0q7sdQ8vG0Wakv0W6Q1VGnnsc0vh+/UY7SSbFfAebJzTZSBb9DI98H103Tg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: After removing cgroup subsystem state could leak or live in background=0A= forever because it is pinned by some reference. For example memory cgroup= =0A= could be pinned by pages in cache or tmpfs.=0A= =0A= This patch adds common debugfs interface for listing basic state for each= =0A= controller. Controller could define callback for dumping own attributes.=0A= =0A= In file /sys/kernel/debug/cgroup/ each line shows state in=0A= format: =3D... [-- =3D... ]=0A= =0A= Common attributes:=0A= =0A= css - css pointer=0A= cgroup - cgroup pointer=0A= id - css id=0A= ino - cgroup inode=0A= flags - css flags=0A= refcnt - css atomic refcount, for online shows huge bias=0A= path - cgroup path=0A= =0A= This patch adds memcg attributes:=0A= =0A= mem_id - 16-bit memory cgroup id=0A= memory - charged pages=0A= memsw - charged memory+swap for v1 and swap for v2=0A= kmem - charged kernel pages=0A= tcpmem - charged tcp pages=0A= shmem - shmem/tmpfs pages=0A= =0A= Link: https://lore.kernel.org/lkml/153414348591.737150.14229960913953276515= .stgit@buzz=0A= Suggested-by: Konstantin Khlebnikov =0A= Reviewed-by: Andrey Ryabinin =0A= Signed-off-by: Dmitry Yakunin =0A= ---=0A= include/linux/cgroup-defs.h | 1 +=0A= kernel/cgroup/cgroup.c | 101 ++++++++++++++++++++++++++++++++++++=0A= mm/memcontrol.c | 14 +++++=0A= 3 files changed, 116 insertions(+)=0A= =0A= diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h=0A= index 8a0d5466c7be..810bd300cbee 100644=0A= --- a/include/linux/cgroup-defs.h=0A= +++ b/include/linux/cgroup-defs.h=0A= @@ -673,6 +673,7 @@ struct cgroup_subsys {=0A= void (*exit)(struct task_struct *task);=0A= void (*release)(struct task_struct *task);=0A= void (*bind)(struct cgroup_subsys_state *root_css);=0A= + void (*css_dump)(struct cgroup_subsys_state *css, struct seq_file *m);=0A= =0A= bool early_init:1;=0A= =0A= diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c=0A= index 625d7483951c..fb9931ff7570 100644=0A= --- a/kernel/cgroup/cgroup.c=0A= +++ b/kernel/cgroup/cgroup.c=0A= @@ -40,6 +40,7 @@=0A= #include =0A= #include =0A= #include =0A= +#include =0A= #include =0A= #include =0A= #include =0A= @@ -7068,3 +7069,103 @@ static int __init cgroup_sysfs_init(void)=0A= subsys_initcall(cgroup_sysfs_init);=0A= =0A= #endif /* CONFIG_SYSFS */=0A= +=0A= +#ifdef CONFIG_DEBUG_FS=0A= +void *css_debugfs_seqfile_start(struct seq_file *m, loff_t *pos)=0A= +{=0A= + struct cgroup_subsys *ss =3D m->private;=0A= + struct cgroup_subsys_state *css;=0A= + int id =3D *pos;=0A= +=0A= + rcu_read_lock();=0A= + css =3D idr_get_next(&ss->css_idr, &id);=0A= + *pos =3D id;=0A= + return css;=0A= +}=0A= +=0A= +void *css_debugfs_seqfile_next(struct seq_file *m, void *v, loff_t *pos)= =0A= +{=0A= + struct cgroup_subsys *ss =3D m->private;=0A= + struct cgroup_subsys_state *css;=0A= + int id =3D *pos + 1;=0A= +=0A= + css =3D idr_get_next(&ss->css_idr, &id);=0A= + *pos =3D id;=0A= + return css;=0A= +}=0A= +=0A= +void css_debugfs_seqfile_stop(struct seq_file *m, void *v)=0A= +{=0A= + rcu_read_unlock();=0A= +}=0A= +=0A= +int css_debugfs_seqfile_show(struct seq_file *m, void *v)=0A= +{=0A= + struct cgroup_subsys *ss =3D m->private;=0A= + struct cgroup_subsys_state *css =3D v;=0A= + /* data is NULL for root cgroup_subsys_state */=0A= + struct percpu_ref_data *data =3D css->refcnt.data;=0A= + size_t buflen;=0A= + char *buf;=0A= + int len;=0A= +=0A= + seq_printf(m, "css=3D%pK cgroup=3D%pK id=3D%d ino=3D%lu flags=3D%#x refcn= t=3D%lu path=3D",=0A= + css, css->cgroup, css->id, cgroup_ino(css->cgroup),=0A= + css->flags, data ? atomic_long_read(&data->count) : 0);=0A= +=0A= + buflen =3D seq_get_buf(m, &buf);=0A= + if (buf) {=0A= + len =3D cgroup_path(css->cgroup, buf, buflen);=0A= + seq_commit(m, len < buflen ? len : -1);=0A= + }=0A= +=0A= + if (ss->css_dump) {=0A= + seq_puts(m, " -- ");=0A= + ss->css_dump(css, m);=0A= + }=0A= +=0A= + seq_putc(m, '\n');=0A= + return 0;=0A= +}=0A= +=0A= +static const struct seq_operations css_debug_seq_ops =3D {=0A= + .start =3D css_debugfs_seqfile_start,=0A= + .next =3D css_debugfs_seqfile_next,=0A= + .stop =3D css_debugfs_seqfile_stop,=0A= + .show =3D css_debugfs_seqfile_show,=0A= +};=0A= +=0A= +static int css_debugfs_open(struct inode *inode, struct file *file)=0A= +{=0A= + int ret =3D seq_open(file, &css_debug_seq_ops);=0A= + struct seq_file *m =3D file->private_data;=0A= +=0A= + if (!ret)=0A= + m->private =3D inode->i_private;=0A= + return ret;=0A= +}=0A= +=0A= +static const struct file_operations css_debugfs_fops =3D {=0A= + .open =3D css_debugfs_open,=0A= + .read =3D seq_read,=0A= + .llseek =3D seq_lseek,=0A= + .release =3D seq_release,=0A= +};=0A= +=0A= +static int __init css_debugfs_init(void)=0A= +{=0A= + struct cgroup_subsys *ss;=0A= + struct dentry *dir;=0A= + int ssid;=0A= +=0A= + dir =3D debugfs_create_dir("cgroup", NULL);=0A= + if (dir) {=0A= + for_each_subsys(ss, ssid)=0A= + debugfs_create_file(ss->name, 0644, dir, ss,=0A= + &css_debugfs_fops);=0A= + }=0A= +=0A= + return 0;=0A= +}=0A= +late_initcall(css_debugfs_init);=0A= +#endif /* CONFIG_DEBUG_FS */=0A= diff --git a/mm/memcontrol.c b/mm/memcontrol.c=0A= index 4b27e245a055..7b3d4a10ac63 100644=0A= --- a/mm/memcontrol.c=0A= +++ b/mm/memcontrol.c=0A= @@ -5654,6 +5654,20 @@ static void mem_cgroup_css_rstat_flush(struct cgroup= _subsys_state *css, int cpu)=0A= }=0A= }=0A= =0A= +static void mem_cgroup_css_dump(struct cgroup_subsys_state *css,=0A= + struct seq_file *m)=0A= +{=0A= + struct mem_cgroup *memcg =3D mem_cgroup_from_css(css);=0A= +=0A= + seq_printf(m, "mem_id=3D%u memory=3D%lu memsw=3D%lu kmem=3D%lu tcpmem=3D%= lu shmem=3D%lu",=0A= + mem_cgroup_id(memcg),=0A= + page_counter_read(&memcg->memory),=0A= + page_counter_read(&memcg->memsw),=0A= + page_counter_read(&memcg->kmem),=0A= + page_counter_read(&memcg->tcpmem),=0A= + memcg_page_state(memcg, NR_SHMEM));=0A= +}=0A= +=0A= #ifdef CONFIG_MMU=0A= /* Handlers for move charge at task migration. */=0A= static int mem_cgroup_do_precharge(unsigned long count)=0A= -- =0A= 2.25.1=0A= =0A=