* [baohua:dev/kairui_scanbalance 9/9] mm/vmscan.c:1954:42: error: no member named 'lrugen' in 'struct lruvec'
@ 2026-09-10 21:45 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-10 21:45 UTC (permalink / raw)
To: Barry Song (Xiaomi); +Cc: llvm, oe-kbuild-all, linux-arm-kernel, barry.song
tree: https://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git dev/kairui_scanbalance
head: c96aacd4045a7a4c8d292e6c9ba6d169cdc0b570
commit: c96aacd4045a7a4c8d292e6c9ba6d169cdc0b570 [9/9] mm/mglru: avoid placing rejected folios below populated gen
config: hexagon-allnoconfig (https://download.01.org/0day-ci/archive/20260911/202609110517.nWCAXYeN-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project d3db069999553568848400c84cbf815c03f5470f)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260911/202609110517.nWCAXYeN-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/202609110517.nWCAXYeN-lkp@intel.com/
All errors (new ones prefixed by >>):
>> mm/vmscan.c:1954:42: error: no member named 'lrugen' in 'struct lruvec'
1954 | struct lru_gen_folio *lrugen = &lruvec->lrugen;
| ~~~~~~ ^
mm/vmscan.c:1955:46: error: no member named 'lrugen' in 'struct lruvec'
1955 | unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
| ~~~~~~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:663:10: note: expanded from macro '__native_word'
663 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
690 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
682 | if (!(condition)) \
| ^~~~~~~~~
mm/vmscan.c:1955:46: error: no member named 'lrugen' in 'struct lruvec'
1955 | unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
| ~~~~~~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:663:39: note: expanded from macro '__native_word'
663 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
690 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
682 | if (!(condition)) \
| ^~~~~~~~~
mm/vmscan.c:1955:46: error: no member named 'lrugen' in 'struct lruvec'
1955 | unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
| ~~~~~~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:664:10: note: expanded from macro '__native_word'
664 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
690 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
682 | if (!(condition)) \
| ^~~~~~~~~
mm/vmscan.c:1955:46: error: no member named 'lrugen' in 'struct lruvec'
1955 | unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
| ~~~~~~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:664:38: note: expanded from macro '__native_word'
664 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
690 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
682 | if (!(condition)) \
| ^~~~~~~~~
mm/vmscan.c:1955:46: error: no member named 'lrugen' in 'struct lruvec'
1955 | unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
| ~~~~~~~~ ^
include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
49 | compiletime_assert_rwonce_type(x); \
| ^
include/asm-generic/rwonce.h:36:48: note: expanded from macro 'compiletime_assert_rwonce_type'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^
include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
702 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
690 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
682 | if (!(condition)) \
| ^~~~~~~~~
mm/vmscan.c:1955:46: error: no member named 'lrugen' in 'struct lruvec'
1955 | unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
| ~~~~~~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:65: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
include/linux/compiler_types.h:635:53: note: expanded from macro '__unqual_scalar_typeof'
635 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
| ^
mm/vmscan.c:1955:46: error: no member named 'lrugen' in 'struct lruvec'
1955 | unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
| ~~~~~~~~ ^
include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
50 | __READ_ONCE(x); \
| ^
include/asm-generic/rwonce.h:44:72: note: expanded from macro '__READ_ONCE'
44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
| ^
>> mm/vmscan.c:1957:46: error: incomplete definition of type 'struct lru_gen_folio'
1957 | if (folio_test_unevictable(folio) || !lrugen->enabled)
| ~~~~~~^
mm/vmscan.c:1954:9: note: forward declaration of 'struct lru_gen_folio'
1954 | struct lru_gen_folio *lrugen = &lruvec->lrugen;
| ^
>> mm/vmscan.c:1960:8: error: call to undeclared function 'lru_gen_folio_seq'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1960 | seq = lru_gen_folio_seq(lruvec, folio, false);
| ^
>> mm/vmscan.c:1962:8: error: call to undeclared function 'lru_gen_from_seq'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1962 | gen = lru_gen_from_seq(seq);
| ^
>> mm/vmscan.c:1967:2: error: call to undeclared function 'lru_gen_update_size'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1967 | lru_gen_update_size(lruvec, folio, -1, gen);
| ^
mm/vmscan.c:1968:31: error: incomplete definition of type 'struct lru_gen_folio'
1968 | list_add(&folio->lru, &lrugen->folios[gen][type][zone]);
| ~~~~~~^
mm/vmscan.c:1954:9: note: forward declaration of 'struct lru_gen_folio'
1954 | struct lru_gen_folio *lrugen = &lruvec->lrugen;
| ^
13 errors generated.
vim +1954 mm/vmscan.c
1938
1939 /*
1940 * Even though we have called folio_set_active() for rejected folios
1941 * in evict_folios(), they may still be demoted or placed in the last
1942 * populated generation since we can now scan all generations.
1943 * Make sure these folios are neither demoted nor placed in the last
1944 * populated generation, unless it is also the youngest generation
1945 */
1946 static inline bool lru_gen_add_rejected_folio(struct lruvec *lruvec, struct folio *folio,
1947 unsigned long scanned_seq)
1948 {
1949 unsigned long seq;
1950 unsigned long flags;
1951 int gen;
1952 int type = folio_is_file_lru(folio);
1953 int zone = folio_zonenum(folio);
> 1954 struct lru_gen_folio *lrugen = &lruvec->lrugen;
1955 unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
1956
> 1957 if (folio_test_unevictable(folio) || !lrugen->enabled)
1958 return false;
1959
> 1960 seq = lru_gen_folio_seq(lruvec, folio, false);
1961 seq = max(seq, min(scanned_seq + 1, max_seq));
> 1962 gen = lru_gen_from_seq(seq);
1963 flags = (gen + 1UL) << LRU_GEN_PGOFF;
1964 /* see the comment on MIN_NR_GENS about PG_active */
1965 set_mask_bits(folio_flags(folio, 0), LRU_GEN_MASK | BIT(PG_active), flags);
1966
> 1967 lru_gen_update_size(lruvec, folio, -1, gen);
1968 list_add(&folio->lru, &lrugen->folios[gen][type][zone]);
1969
1970 return true;
1971 }
1972
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-10 21:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-10 21:45 [baohua:dev/kairui_scanbalance 9/9] mm/vmscan.c:1954:42: error: no member named 'lrugen' in 'struct lruvec' kernel test robot
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.