From: kernel test robot <lkp@intel.com>
To: "Barry Song (Xiaomi)" <baohua@kernel.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
linux-arm-kernel@lists.infradead.org, barry.song@csr.com
Subject: [baohua:dev/kairui_scanbalance 9/9] mm/vmscan.c:1954:42: error: no member named 'lrugen' in 'struct lruvec'
Date: Fri, 11 Sep 2026 05:45:04 +0800 [thread overview]
Message-ID: <202609110517.nWCAXYeN-lkp@intel.com> (raw)
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
reply other threads:[~2026-09-10 21:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202609110517.nWCAXYeN-lkp@intel.com \
--to=lkp@intel.com \
--cc=baohua@kernel.org \
--cc=barry.song@csr.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
/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.