mm/memcg: alignment memcg_data define condition
Subsystems (3)
PATCH v3 1/1 mm/memcg: alignment memcg_data define condition
From: "Alex Shi (Tencent)" <[email protected]>
commit 21c690a349ba ("mm: introduce slabobj_ext to support slab object extensions") changed the folio/page->memcg_data define condition from MEMCG to SLAB_OBJ_EXT. This action make memcg_data exposed while !MEMCG.
As Vlastimil Babka suggested, let's add _unused_slab_obj_ext for SLAB_MATCH for slab.obj_exts while !MEMCG. That could resolve the match issue, clean up the feature logical.
--- include/linux/mm_types.h | 8 ++++++-- mm/slab.h | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-)
include/linux/mm_types.h +6 -2
@@ -180,8 +180,10 @@ struct page {/* Usage count. *DO NOT USE DIRECTLY*. See page_ref.h */ atomic_t _refcount; -#ifdef CONFIG_SLAB_OBJ_EXT +#ifdef CONFIG_MEMCG unsigned long memcg_data; +#elif defined(CONFIG_SLAB_OBJ_EXT ) +unsigned long _unused_slab_obj_ext;#endif /*
@@ -343,8 +345,10 @@ struct folio { };atomic_t _mapcount;atomic_t _refcount; -#ifdef CONFIG_SLAB_OBJ_EXT +#ifdef CONFIG_MEMCG unsigned long memcg_data; +#elif defined(CONFIG_SLAB_OBJ_EXT ) +unsigned long _unused_slab_obj_ext;#endif #if defined(WANT_PAGE_VIRTUAL )void *virtual;
mm/slab.h +3 -1
@@ -97,8 +97,10 @@ struct slab {SLAB_MATCH (flags, __page_flags);SLAB_MATCH (compound_head, slab_cache);/* Ensure bit 0 is clear */ SLAB_MATCH (_refcount, __page_refcount); -#ifdef CONFIG_SLAB_OBJ_EXT +#ifdef CONFIG_MEMCG SLAB_MATCH (memcg_data, obj_exts); +#elif defined(CONFIG_SLAB_OBJ_EXT ) +SLAB_MATCH (_unused_slab_obj_ext, obj_exts);#endif #undef SLAB_MATCHstatic_assert (sizeof (struct slab ) <=sizeof (struct page ));
Signature · 1 line
2.43.0
Quoted 10 lines · On 7/12/24 6:14 AM, [email protected] wrote:
From: "Alex Shi (Tencent)" <[email protected]>
commit
21c690a349ba("mm: introduceslabobj_extto support slab object extensions") changed the folio/page->memcg_data define condition from MEMCG toSLAB_OBJ_EXT. This action makememcg_dataexposed while !MEMCG.As Vlastimil Babka suggested, let's add
_unused_slab_obj_extforSLAB_MATCHfor slab.obj_exts while !MEMCG. That could resolve the match issue, clean up the feature logical.
Quoted 7 lines
Signed-off-by Alex Shi (Tencent) <[email protected]>Cc Randy Dunlap <[email protected]>Cc Yoann Congal <[email protected]>Cc Masahiro Yamada <[email protected]>Cc Petr Mladek <[email protected]>Cc Suren Baghdasaryan <[email protected]>Cc Vlastimil Babka <[email protected]>
Thanks, added to slab/for-next