* [android-common:android15-6.6 0/1] mm/vmscan.c:2623:15: warning: no previous prototype for function 'shrink_inactive_list'
@ 2026-09-08 4:58 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-08 4:58 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
Hi xiaofeng,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common android15-6.6
head: 7c4d9544b5a66846a8522efb9935c50a56b8f1ec
commit: 8cb9b0ef9dbf1ee46c01906f91af8e35c12527d1 [0/1] ANDROID: GKI: add vendor hook to reclaim cold pagecache generated by bufferio in advance.
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20260908/202609081249.8Kx67Wra-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260908/202609081249.8Kx67Wra-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/202609081249.8Kx67Wra-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from <built-in>:3:
In file included from include/linux/compiler_types.h:150:
include/linux/compiler-clang.h:33:9: warning: '__SANITIZE_ADDRESS__' macro redefined [-Wmacro-redefined]
33 | #define __SANITIZE_ADDRESS__
| ^
<built-in>:353:9: note: previous definition is here
353 | #define __SANITIZE_ADDRESS__ 1
| ^
In file included from mm/vmscan.c:15:
In file included from include/linux/mm.h:2238:
include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
In file included from mm/vmscan.c:30:
include/linux/mm_inline.h:49:41: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
49 | __mod_lruvec_state(lruvec, NR_LRU_BASE + lru, nr_pages);
| ~~~~~~~~~~~ ^ ~~~
include/linux/mm_inline.h:51:22: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
51 | NR_ZONE_LRU_BASE + lru, nr_pages);
| ~~~~~~~~~~~~~~~~ ^ ~~~
mm/vmscan.c:678:51: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
678 | size += zone_page_state(zone, NR_ZONE_LRU_BASE + lru);
| ~~~~~~~~~~~~~~~~ ^ ~~~
mm/vmscan.c:1043:15: warning: no previous prototype for function 'shrink_slab' [-Wmissing-prototypes]
1043 | unsigned long shrink_slab(gfp_t gfp_mask, int nid,
| ^
mm/vmscan.c:1043:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
1043 | unsigned long shrink_slab(gfp_t gfp_mask, int nid,
| ^
| static
mm/vmscan.c:2442:4: warning: arithmetic between different enumeration types ('enum vm_event_item' and 'enum zone_type') [-Wenum-enum-conversion]
2442 | __count_zid_vm_events(PGSCAN_SKIP, zid, nr_skipped[zid]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:135:34: note: expanded from macro '__count_zid_vm_events'
135 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)
| ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
>> mm/vmscan.c:2623:15: warning: no previous prototype for function 'shrink_inactive_list' [-Wmissing-prototypes]
2623 | unsigned long shrink_inactive_list(unsigned long nr_to_scan,
| ^
mm/vmscan.c:2623:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2623 | unsigned long shrink_inactive_list(unsigned long nr_to_scan,
| ^
| static
mm/vmscan.c:2971:51: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
2971 | inactive = lruvec_page_state(lruvec, NR_LRU_BASE + inactive_lru);
| ~~~~~~~~~~~ ^ ~~~~~~~~~~~~
mm/vmscan.c:2972:49: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
2972 | active = lruvec_page_state(lruvec, NR_LRU_BASE + active_lru);
| ~~~~~~~~~~~ ^ ~~~~~~~~~~
mm/vmscan.c:5175:4: warning: arithmetic between different enumeration types ('enum vm_event_item' and 'enum zone_type') [-Wenum-enum-conversion]
5175 | __count_zid_vm_events(PGSCAN_SKIP, zone, skipped_zone);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:135:34: note: expanded from macro '__count_zid_vm_events'
135 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)
| ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
mm/vmscan.c:7018:3: warning: arithmetic between different enumeration types ('enum vm_event_item' and 'enum zone_type') [-Wenum-enum-conversion]
7018 | __count_zid_vm_events(ALLOCSTALL, sc->reclaim_idx, 1);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:135:34: note: expanded from macro '__count_zid_vm_events'
135 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)
| ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
16 warnings generated.
vim +/shrink_inactive_list +2623 mm/vmscan.c
2618
2619 /*
2620 * shrink_inactive_list() is a helper for shrink_node(). It returns the number
2621 * of reclaimed pages
2622 */
> 2623 unsigned long shrink_inactive_list(unsigned long nr_to_scan,
2624 struct lruvec *lruvec, struct scan_control *sc,
2625 enum lru_list lru)
2626 {
2627 LIST_HEAD(folio_list);
2628 unsigned long nr_scanned;
2629 unsigned int nr_reclaimed = 0;
2630 unsigned long nr_taken;
2631 struct reclaim_stat stat;
2632 bool file = is_file_lru(lru);
2633 enum vm_event_item item;
2634 struct pglist_data *pgdat = lruvec_pgdat(lruvec);
2635 bool stalled = false;
2636
2637 while (unlikely(too_many_isolated(pgdat, file, sc))) {
2638 if (stalled)
2639 return 0;
2640
2641 /* wait a bit for the reclaimer. */
2642 stalled = true;
2643 reclaim_throttle(pgdat, VMSCAN_THROTTLE_ISOLATED);
2644
2645 /* We are about to die and free our memory. Return now. */
2646 if (fatal_signal_pending(current))
2647 return SWAP_CLUSTER_MAX;
2648 }
2649
2650 lru_add_drain();
2651
2652 spin_lock_irq(&lruvec->lru_lock);
2653
2654 nr_taken = isolate_lru_folios(nr_to_scan, lruvec, &folio_list,
2655 &nr_scanned, sc, lru);
2656
2657 __mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, nr_taken);
2658 item = PGSCAN_KSWAPD + reclaimer_offset();
2659 if (!cgroup_reclaim(sc))
2660 __count_vm_events(item, nr_scanned);
2661 __count_memcg_events(lruvec_memcg(lruvec), item, nr_scanned);
2662 __count_vm_events(PGSCAN_ANON + file, nr_scanned);
2663
2664 spin_unlock_irq(&lruvec->lru_lock);
2665
2666 if (nr_taken == 0)
2667 return 0;
2668
2669 nr_reclaimed = shrink_folio_list(&folio_list, pgdat, sc, &stat, false);
2670 trace_android_vh_handle_trylock_failed_folio(&folio_list);
2671
2672 spin_lock_irq(&lruvec->lru_lock);
2673 move_folios_to_lru(lruvec, &folio_list);
2674
2675 __mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, -nr_taken);
2676 item = PGSTEAL_KSWAPD + reclaimer_offset();
2677 if (!cgroup_reclaim(sc))
2678 __count_vm_events(item, nr_reclaimed);
2679 __count_memcg_events(lruvec_memcg(lruvec), item, nr_reclaimed);
2680 __count_vm_events(PGSTEAL_ANON + file, nr_reclaimed);
2681 spin_unlock_irq(&lruvec->lru_lock);
2682
2683 lru_note_cost(lruvec, file, stat.nr_pageout, nr_scanned - nr_reclaimed);
2684 mem_cgroup_uncharge_list(&folio_list);
2685 free_unref_page_list(&folio_list);
2686
2687 /*
2688 * If dirty folios are scanned that are not queued for IO, it
2689 * implies that flushers are not doing their job. This can
2690 * happen when memory pressure pushes dirty folios to the end of
2691 * the LRU before the dirty limits are breached and the dirty
2692 * data has expired. It can also happen when the proportion of
2693 * dirty folios grows not through writes but through memory
2694 * pressure reclaiming all the clean cache. And in some cases,
2695 * the flushers simply cannot keep up with the allocation
2696 * rate. Nudge the flusher threads in case they are asleep.
2697 */
2698 if (stat.nr_unqueued_dirty == nr_taken) {
2699 wakeup_flusher_threads(WB_REASON_VMSCAN);
2700 /*
2701 * For cgroupv1 dirty throttling is achieved by waking up
2702 * the kernel flusher here and later waiting on folios
2703 * which are in writeback to finish (see shrink_folio_list()).
2704 *
2705 * Flusher may not be able to issue writeback quickly
2706 * enough for cgroupv1 writeback throttling to work
2707 * on a large system.
2708 */
2709 if (!writeback_throttling_sane(sc))
2710 reclaim_throttle(pgdat, VMSCAN_THROTTLE_WRITEBACK);
2711 }
2712
2713 sc->nr.dirty += stat.nr_dirty;
2714 sc->nr.congested += stat.nr_congested;
2715 sc->nr.unqueued_dirty += stat.nr_unqueued_dirty;
2716 sc->nr.writeback += stat.nr_writeback;
2717 sc->nr.immediate += stat.nr_immediate;
2718 sc->nr.taken += nr_taken;
2719 if (file)
2720 sc->nr.file_taken += nr_taken;
2721
2722 trace_mm_vmscan_lru_shrink_inactive(pgdat->node_id,
2723 nr_scanned, nr_reclaimed, &stat, sc->priority, file);
2724 return nr_reclaimed;
2725 }
2726 EXPORT_SYMBOL(shrink_inactive_list);
2727
--
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-08 4:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-08 4:58 [android-common:android15-6.6 0/1] mm/vmscan.c:2623:15: warning: no previous prototype for function 'shrink_inactive_list' 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.