linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] memcg: separate private and public ID namespaces
@ 2025-12-25 23:21 Shakeel Butt
  2025-12-25 23:21 ` [PATCH 1/8] memcg: introduce private id API for in-kernel users Shakeel Butt
                   ` (8 more replies)
  0 siblings, 9 replies; 14+ messages in thread
From: Shakeel Butt @ 2025-12-25 23:21 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Johannes Weiner, Michal Hocko, Roman Gushchin, Muchun Song,
	SeongJae Park, Meta kernel team, linux-mm, cgroups, damon,
	linux-kernel

The memory cgroup subsystem maintains a private ID infrastructure that
is decoupled from the cgroup IDs. This private ID system exists because
some kernel objects (like swap entries and shadow entries in the
workingset code) can outlive the cgroup they were associated with.
The motivation is best described in commit 73f576c04b941 ("mm:
memcontrol: fix cgroup creation failure after many small jobs").

Unfortunately, some in-kernel users (DAMON, LRU gen debugfs interface,
shrinker debugfs) started exposing these private IDs to userspace.
This is problematic because:

1. The private IDs are internal implementation details that could change
2. Userspace already has access to cgroup IDs through the cgroup
   filesystem
3. Using different ID namespaces in different interfaces is confusing

This series cleans up the memcg ID infrastructure by:

1. Explicitly marking the private ID APIs with "private" in their names
   to make it clear they are for internal use only (swap/workingset)

2. Making the public cgroup ID APIs (mem_cgroup_id/mem_cgroup_get_from_id)
   unconditionally available

3. Converting DAMON, LRU gen, and shrinker debugfs interfaces to use
   the public cgroup IDs instead of the private IDs

4. Removing the now-unused wrapper functions and renaming the public
   APIs for clarity

After this series:
- mem_cgroup_private_id() / mem_cgroup_from_private_id() are used for
  internal kernel objects that outlive their cgroup (swap, workingset)
- mem_cgroup_id() / mem_cgroup_get_from_id() return the public cgroup ID
  (from cgroup_id()) for use in userspace-facing interfaces

Note: please apply this series after the patch at
https://lore.kernel.org/20251225002904.139543-1-shakeel.butt@linux.dev/

Shakeel Butt (8):
  memcg: introduce private id API for in-kernel users
  memcg: expose mem_cgroup_ino() and mem_cgroup_get_from_ino()
    unconditionally
  memcg: mem_cgroup_get_from_ino() returns NULL on error
  memcg: use cgroup_id() instead of cgroup_ino() for memcg ID
  mm/damon: use cgroup ID instead of private memcg ID
  mm/vmscan: use cgroup ID instead of private memcg ID in lru_gen
    interface
  memcg: remove unused mem_cgroup_id() and mem_cgroup_from_id()
  memcg: rename mem_cgroup_ino() to mem_cgroup_id()

 include/linux/damon.h      |  4 +--
 include/linux/memcontrol.h | 26 +++++++----------
 mm/damon/core.c            |  7 ++---
 mm/damon/sysfs-schemes.c   |  6 ++--
 mm/list_lru.c              |  2 +-
 mm/memcontrol-v1.c         |  6 ++--
 mm/memcontrol-v1.h         |  4 +--
 mm/memcontrol.c            | 60 ++++++++++++++++++--------------------
 mm/shrinker_debug.c        | 13 +++++----
 mm/vmscan.c                | 17 ++++-------
 mm/workingset.c            |  8 ++---
 11 files changed, 68 insertions(+), 85 deletions(-)

--
2.47.3



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2025-12-27 22:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-25 23:21 [PATCH 0/8] memcg: separate private and public ID namespaces Shakeel Butt
2025-12-25 23:21 ` [PATCH 1/8] memcg: introduce private id API for in-kernel users Shakeel Butt
2025-12-25 23:21 ` [PATCH 2/8] memcg: expose mem_cgroup_ino() and mem_cgroup_get_from_ino() unconditionally Shakeel Butt
2025-12-25 23:21 ` [PATCH 3/8] memcg: mem_cgroup_get_from_ino() returns NULL on error Shakeel Butt
2025-12-25 23:21 ` [PATCH 4/8] memcg: use cgroup_id() instead of cgroup_ino() for memcg ID Shakeel Butt
2025-12-25 23:21 ` [PATCH 5/8] mm/damon: use cgroup ID instead of private " Shakeel Butt
2025-12-26 18:23   ` SeongJae Park
2025-12-25 23:21 ` [PATCH 6/8] mm/vmscan: use cgroup ID instead of private memcg ID in lru_gen interface Shakeel Butt
2025-12-25 23:21 ` [PATCH 7/8] memcg: remove unused mem_cgroup_id() and mem_cgroup_from_id() Shakeel Butt
2025-12-25 23:21 ` [PATCH 8/8] memcg: rename mem_cgroup_ino() to mem_cgroup_id() Shakeel Butt
2025-12-26 12:31   ` kernel test robot
2025-12-27 22:12     ` SeongJae Park
2025-12-26 13:23   ` kernel test robot
2025-12-26 18:17 ` [PATCH 0/8] memcg: separate private and public ID namespaces SeongJae Park

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox