All of lore.kernel.org
 help / color / mirror / Atom feed
From: YoungJun Park <youngjun.park@lge.com>
To: kernel test robot <lkp@intel.com>
Cc: akpm@linux-foundation.org, hannes@cmpxchg.org,
	oe-kbuild-all@lists.linux.dev, mhocko@kernel.org,
	roman.gushchin@linux.dev, shakeel.butt@linux.dev,
	muchun.song@linux.dev, shikemeng@huaweicloud.com,
	kasong@tencent.com, nphamcs@gmail.com, bhe@redhat.com,
	baohua@kernel.org, chrisl@kernel.org, cgroups@vger.kernel.org,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	gunho.lee@lge.com, iamjoonsoo.kim@lge.com, taejoon.song@lge.com,
	"Michal Koutný" <mkoutny@suse.com>
Subject: Re: [PATCH 1/4] mm/swap, memcg: Introduce infrastructure for cgroup-based swap priority
Date: Tue, 22 Jul 2025 23:11:58 +0900	[thread overview]
Message-ID: <aH+cLtTrQtt8qaRz@yjaykim-PowerEdge-T330> (raw)
In-Reply-To: <202507190037.RCDNmMsJ-lkp@intel.com>

On Sat, Jul 19, 2025 at 01:08:46AM +0800, kernel test robot wrote:
> Hi Youngjun,
> 
> kernel test robot noticed the following build errors:
> 
> [auto build test ERROR on 347e9f5043c89695b01e66b3ed111755afcf1911]
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Youngjun-Park/mm-swap-memcg-Introduce-infrastructure-for-cgroup-based-swap-priority/20250717-042648
> base:   347e9f5043c89695b01e66b3ed111755afcf1911
> patch link:    https://lore.kernel.org/r/20250716202006.3640584-2-youngjun.park%40lge.com
> patch subject: [PATCH 1/4] mm/swap, memcg: Introduce infrastructure for cgroup-based swap priority
> config: sparc64-randconfig-r054-20250718 (https://download.01.org/0day-ci/archive/20250719/202507190037.RCDNmMsJ-lkp@intel.com/config)
> compiler: sparc64-linux-gcc (GCC) 15.1.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250719/202507190037.RCDNmMsJ-lkp@intel.com/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202507190037.RCDNmMsJ-lkp@intel.com/
> 
> All errors (new ones prefixed by >>):
> 
>    In file included from include/linux/rbtree.h:24,
>                     from include/linux/mm_types.h:11,
>                     from include/linux/mmzone.h:22,
>                     from include/linux/swap.h:7,
>                     from mm/swap_cgroup_priority.c:16:
>    mm/swap_cgroup_priority.c: In function 'get_swap_cgroup_priority':
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/rcupdate.h:532:17: note: in definition of macro '__rcu_dereference_check'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                 ^
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/rcupdate.h:532:38: note: in definition of macro '__rcu_dereference_check'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                      ^
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
>    In file included from <command-line>:
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/compiler_types.h:548:23: note: in definition of macro '__compiletime_assert'
>      548 |                 if (!(condition))                                       \
>          |                       ^~~~~~~~~
>    include/linux/compiler_types.h:568:9: note: in expansion of macro '_compiletime_assert'
>      568 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>          |         ^~~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |         ^~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |                            ^~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
>       49 |         compiletime_assert_rwonce_type(x);                              \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/compiler_types.h:548:23: note: in definition of macro '__compiletime_assert'
>      548 |                 if (!(condition))                                       \
>          |                       ^~~~~~~~~
>    include/linux/compiler_types.h:568:9: note: in expansion of macro '_compiletime_assert'
>      568 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>          |         ^~~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |         ^~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |                            ^~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
>       49 |         compiletime_assert_rwonce_type(x);                              \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/compiler_types.h:548:23: note: in definition of macro '__compiletime_assert'
>      548 |                 if (!(condition))                                       \
>          |                       ^~~~~~~~~
>    include/linux/compiler_types.h:568:9: note: in expansion of macro '_compiletime_assert'
>      568 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>          |         ^~~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |         ^~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |                            ^~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
>       49 |         compiletime_assert_rwonce_type(x);                              \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/compiler_types.h:548:23: note: in definition of macro '__compiletime_assert'
>      548 |                 if (!(condition))                                       \
>          |                       ^~~~~~~~~
>    include/linux/compiler_types.h:568:9: note: in expansion of macro '_compiletime_assert'
>      568 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>          |         ^~~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |         ^~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |                            ^~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
>       49 |         compiletime_assert_rwonce_type(x);                              \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/compiler_types.h:548:23: note: in definition of macro '__compiletime_assert'
>      548 |                 if (!(condition))                                       \
>          |                       ^~~~~~~~~
>    include/linux/compiler_types.h:568:9: note: in expansion of macro '_compiletime_assert'
>      568 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>          |         ^~~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |         ^~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
>       49 |         compiletime_assert_rwonce_type(x);                              \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/compiler_types.h:518:27: note: in definition of macro '__unqual_scalar_typeof'
>      518 |                 _Generic((x),                                           \
>          |                           ^
>    include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
>       50 |         __READ_ONCE(x);                                                 \
>          |         ^~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
>    In file included from ./arch/sparc/include/generated/asm/rwonce.h:1,
>                     from include/linux/compiler.h:390,
>                     from include/linux/export.h:5,
>                     from include/linux/linkage.h:7,
>                     from include/linux/preempt.h:10,
>                     from include/linux/spinlock.h:56,
>                     from include/linux/swap.h:5:
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/asm-generic/rwonce.h:44:73: note: in definition of macro '__READ_ONCE'
>       44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
>          |                                                                         ^
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
> >> mm/swap_cgroup_priority.c:115:37: error: invalid use of undefined type 'struct mem_cgroup'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                                     ^~
>    include/linux/rcupdate.h:535:19: note: in definition of macro '__rcu_dereference_check'
>      535 |         ((typeof(*p) __force __kernel *)(local)); \
>          |                   ^
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:115:16: note: in expansion of macro 'rcu_dereference'
>      115 |         return rcu_dereference(memcg->swap_priority);
>          |                ^~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c: In function 'show_swap_cgroup_priority':
>    mm/swap_cgroup_priority.c:186:30: error: invalid use of undefined type 'struct mem_cgroup'
>      186 |         swap_priority = memcg->swap_priority;
>          |                              ^~
>    mm/swap_cgroup_priority.c: In function 'swap_alloc_cgroup_priority':
>    mm/swap_cgroup_priority.c:285:26: error: invalid use of undefined type 'struct mem_cgroup'
>      285 |                 if (memcg->swap_priority != swap_priority)
>          |                          ^~
>    mm/swap_cgroup_priority.c: In function 'apply_swap_cgroup_priority':
>    mm/swap_cgroup_priority.c:638:46: error: invalid use of undefined type 'struct mem_cgroup'
>      638 |         swap_priority = rcu_dereference(memcg->swap_priority);
>          |                                              ^~
>    include/linux/rcupdate.h:532:17: note: in definition of macro '__rcu_dereference_check'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                 ^
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:638:25: note: in expansion of macro 'rcu_dereference'
>      638 |         swap_priority = rcu_dereference(memcg->swap_priority);
>          |                         ^~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:638:46: error: invalid use of undefined type 'struct mem_cgroup'
>      638 |         swap_priority = rcu_dereference(memcg->swap_priority);
>          |                                              ^~
>    include/linux/rcupdate.h:532:38: note: in definition of macro '__rcu_dereference_check'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                      ^
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:638:25: note: in expansion of macro 'rcu_dereference'
>      638 |         swap_priority = rcu_dereference(memcg->swap_priority);
>          |                         ^~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:638:46: error: invalid use of undefined type 'struct mem_cgroup'
>      638 |         swap_priority = rcu_dereference(memcg->swap_priority);
>          |                                              ^~
>    include/linux/compiler_types.h:548:23: note: in definition of macro '__compiletime_assert'
>      548 |                 if (!(condition))                                       \
>          |                       ^~~~~~~~~
>    include/linux/compiler_types.h:568:9: note: in expansion of macro '_compiletime_assert'
>      568 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>          |         ^~~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |         ^~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |                            ^~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
>       49 |         compiletime_assert_rwonce_type(x);                              \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
>          |                            ^~~~~~~~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:638:25: note: in expansion of macro 'rcu_dereference'
>      638 |         swap_priority = rcu_dereference(memcg->swap_priority);
>          |                         ^~~~~~~~~~~~~~~
>    mm/swap_cgroup_priority.c:638:46: error: invalid use of undefined type 'struct mem_cgroup'
>      638 |         swap_priority = rcu_dereference(memcg->swap_priority);
>          |                                              ^~
>    include/linux/compiler_types.h:548:23: note: in definition of macro '__compiletime_assert'
>      548 |                 if (!(condition))                                       \
>          |                       ^~~~~~~~~
>    include/linux/compiler_types.h:568:9: note: in expansion of macro '_compiletime_assert'
>      568 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
>          |         ^~~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |         ^~~~~~~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
>       36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
>          |                            ^~~~~~~~~~~~~
>    include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
>       49 |         compiletime_assert_rwonce_type(x);                              \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:532:50: note: in expansion of macro 'READ_ONCE'
>      532 |         typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
>          |                                                  ^~~~~~~~~
>    include/linux/rcupdate.h:680:9: note: in expansion of macro '__rcu_dereference_check'
>      680 |         __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
>          |         ^~~~~~~~~~~~~~~~~~~~~~~
>    include/linux/rcupdate.h:752:28: note: in expansion of macro 'rcu_dereference_check'
>      752 | #define rcu_dereference(p) rcu_dereference_check(p, 0)
> 
> 
> vim +115 mm/swap_cgroup_priority.c
> 
>   > 16	#include <linux/swap.h>
>     17	#include <linux/rcupdate.h>
>     18	#include <linux/memcontrol.h>
>     19	#include <linux/plist.h>
>     20	#include "swap.h"
>     21	#include "swap_cgroup_priority.h"
>     22	#include "memcontrol-v1.h"
>     23	
>     24	static LIST_HEAD(swap_cgroup_priority_list);
>     25	
>     26	/*
>     27	 * struct swap_cgroup_priority
>     28	 *
>     29	 * This structure is RCU protected. Its lifecycle is determined by its
>     30	 * owning memcg or when its 'distance' reaches zero. The 'distance' field
>     31	 * tracks priority differences from global swap. If zero, and its default_prio
>     32	 * follows global swap priority(SWAP_PRIORITY_GLOBAL), the object is destroyed.
>     33	 *
>     34	 * pnode - Array of pointers to swap device priority nodes.
>     35	 * owner - The owning memory cgroup.
>     36	 * rcu - RCU free callback.
>     37	 * link - Global linked list entry.
>     38	 * least_priority - Current lowest priority.
>     39	 * distance - Priority differences from global swap priority.
>     40	 * default_prio - Default priority for this cgroup.
>     41	 * plist - Priority list head.
>     42	 */
>     43	struct swap_cgroup_priority {
>     44		struct swap_cgroup_priority_pnode *pnode[MAX_SWAPFILES];
>     45		struct mem_cgroup *owner;
>     46	
>     47		union {
>     48			struct rcu_head rcu;
>     49			struct list_head link;
>     50		};
>     51	
>     52		int least_priority;
>     53		s8 distance;
>     54		int default_prio;
>     55		struct plist_head plist[];
>     56	};
>     57	
>     58	/*
>     59	 * struct swap_cgroup_priority_pnode
>     60	 *
>     61	 * This structure represents a priority node for a specific swap device
>     62	 * within a cgroup.
>     63	 *
>     64	 * swap - Pointer to the associated swap device.
>     65	 * id - Unique identifier for the swap device.
>     66	 * prio - Configured priority for this device.
>     67	 * avail_lists - Connections to various priority lists.
>     68	 */
>     69	struct swap_cgroup_priority_pnode {
>     70		struct swap_info_struct *swap;
>     71		u64 id;
>     72		signed short prio;
>     73		struct plist_node avail_lists[];
>     74	};
>     75	
>     76	/*
>     77	 * Even with a zero distance, a swap device isn't assigned if it doesn't
>     78	 * meet global swap priority conditions; thus, we don't clear it.
>     79	 */
>     80	static bool should_clear_swap_cgroup_priority(
>     81		struct swap_cgroup_priority *swap_priority)
>     82	{
>     83		WARN_ON_ONCE(swap_priority->distance < 0 ||
>     84			swap_priority->distance > MAX_SWAPFILES);
>     85	
>     86		if (swap_priority->distance == 0 &&
>     87		    swap_priority->default_prio == SWAP_PRIORITY_GLOBAL)
>     88			return true;
>     89	
>     90		return false;
>     91	}
>     92	
>     93	/*
>     94	 * swapdev_id
>     95	 *
>     96	 * A unique identifier for a swap device.
>     97	 *
>     98	 * This ID ensures stable identification for users and crucial synchronization
>     99	 * for swap cgroup priority settings. It provides a reliable reference even if
>    100	 * device paths or numbers change.
>    101	 */
>    102	static atomic64_t swapdev_id_counter;
>    103	
>    104	void get_swapdev_id(struct swap_info_struct *si)
>    105	{
>    106		si->id = atomic64_inc_return(&swapdev_id_counter);
>    107	}
>    108	
>    109	static struct swap_cgroup_priority *get_swap_cgroup_priority(
>    110		struct mem_cgroup *memcg)
>    111	{
>    112		if (!memcg)
>    113			return NULL;
>    114	
>  > 115		return rcu_dereference(memcg->swap_priority);
>    116	}
>    117	
 
The build dependency should have been CONFIG_MEMCG instead of CONFIG_CGROUP.
Apologies for overlooking this. I will update the dependency and verify
in the next patch version.

Best regards,
Youngjun Park

  reply	other threads:[~2025-07-22 14:11 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-16 20:20 [PATCH 0/4] mm/swap, memcg: Support per-cgroup swap device priorities Youngjun Park
2025-07-16 20:20 ` [PATCH 1/4] mm/swap, memcg: Introduce infrastructure for cgroup-based swap priority Youngjun Park
2025-07-17 11:20   ` kernel test robot
2025-07-22 14:09     ` YoungJun Park
2025-07-18 17:08   ` kernel test robot
2025-07-22 14:11     ` YoungJun Park [this message]
2025-07-21 15:13   ` kernel test robot
2025-07-22 14:14     ` YoungJun Park
2025-07-22  8:41   ` Michal Koutný
2025-07-22 14:05     ` YoungJun Park
2025-07-22 18:41       ` YoungJun Park
2025-08-14 14:03         ` Michal Koutný
2025-08-15 15:10           ` Chris Li
2025-08-16 17:21             ` YoungJun Park
2025-08-16 19:15               ` Chris Li
2025-08-19 10:12                 ` YoungJun Park
2025-08-20  0:52                   ` Chris Li
2025-08-20 14:39                     ` YoungJun Park
2025-08-21 20:39                       ` Chris Li
2025-08-22  5:45                         ` YoungJun Park
2025-08-22 16:48                           ` Chris Li
2025-08-24 12:05                             ` YoungJun Park
2025-08-26  8:19                               ` Chris Li
2025-08-26 12:57                                 ` YoungJun Park
2025-08-26 14:30                                   ` Chris Li
2025-08-30  4:05                                     ` YoungJun Park
2025-08-30  7:13                                       ` Chris Li
2025-08-31 13:53                                         ` YoungJun Park
2025-08-31 16:45                                           ` Chris Li
2025-09-01 16:03                                             ` YoungJun Park
2025-09-01 16:06                                             ` YoungJun Park
2025-09-01 22:40                                               ` Chris Li
2025-09-03  9:32                                                 ` Chris Li
2025-09-03 10:18                                                   ` YoungJun Park
2025-09-05  6:30                                                 ` YoungJun Park
2025-09-05 23:45                                                   ` Chris Li
2025-09-06 12:56                                                     ` Chris Li
2025-09-07 17:51                                                       ` YoungJun Park
2025-09-10  0:26                                                         ` Chris Li
2025-09-07 17:39                                                     ` YoungJun Park
2025-09-10  0:14                                                       ` Chris Li
2025-09-12 15:39                                                         ` YoungJun Park
2025-08-24 14:19                             ` YoungJun Park
2025-08-16 16:41           ` YoungJun Park
2025-07-16 20:20 ` [PATCH 2/4] mm: swap: Apply per-cgroup swap priority mechanism to swap layer Youngjun Park
2025-07-16 20:20 ` [PATCH 3/4] mm: memcg: Add swap cgroup priority inheritance mechanism Youngjun Park
2025-07-16 20:20 ` [PATCH 4/4] mm: swap: Per-cgroup per-CPU swap device cache with shared clusters Youngjun Park
2025-07-22 17:44   ` Kairui Song
2025-07-22 18:30     ` YoungJun Park

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aH+cLtTrQtt8qaRz@yjaykim-PowerEdge-T330 \
    --to=youngjun.park@lge.com \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=bhe@redhat.com \
    --cc=cgroups@vger.kernel.org \
    --cc=chrisl@kernel.org \
    --cc=gunho.lee@lge.com \
    --cc=hannes@cmpxchg.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=kasong@tencent.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lkp@intel.com \
    --cc=mhocko@kernel.org \
    --cc=mkoutny@suse.com \
    --cc=muchun.song@linux.dev \
    --cc=nphamcs@gmail.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeel.butt@linux.dev \
    --cc=shikemeng@huaweicloud.com \
    --cc=taejoon.song@lge.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.