Re: [PATCH 2/4] mm: multi-gen LRU: MGLRU unbalance reclaim

From: Dan Carpenter
Date: Mon Dec 04 2023 - 01:53:36 EST


Hi Huan,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Huan-Yang/mm-vmscan-LRU-unbalance-cgroup-reclaim/20231108-151757
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20231108065818.19932-3-link%40vivo.com
patch subject: [PATCH 2/4] mm: multi-gen LRU: MGLRU unbalance reclaim
config: x86_64-randconfig-161-20231108 (https://download.01.org/0day-ci/archive/20231204/202312040256.guajrRNm-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231204/202312040256.guajrRNm-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
| Closes: https://lore.kernel.org/r/202312040256.guajrRNm-lkp@xxxxxxxxx/

smatch warnings:
mm/vmscan.c:4518 isolate_folios() error: uninitialized symbol 'unbalance'.

vim +/unbalance +4518 mm/vmscan.c

ac35a490237446 Yu Zhao 2022-09-18 4481 static int isolate_folios(struct lruvec *lruvec, struct scan_control *sc, int swappiness,
ac35a490237446 Yu Zhao 2022-09-18 4482 int *type_scanned, struct list_head *list)
ac35a490237446 Yu Zhao 2022-09-18 4483 {
ac35a490237446 Yu Zhao 2022-09-18 4484 int i;
ac35a490237446 Yu Zhao 2022-09-18 4485 int type;
ac35a490237446 Yu Zhao 2022-09-18 4486 int scanned;
ac35a490237446 Yu Zhao 2022-09-18 4487 int tier = -1;
9da842af0b17c7 Huan Yang 2023-11-08 4488 bool unbalance;

unbalance is never set to false. Only to true.

ac35a490237446 Yu Zhao 2022-09-18 4489 DEFINE_MIN_SEQ(lruvec);
ac35a490237446 Yu Zhao 2022-09-18 4490
ac35a490237446 Yu Zhao 2022-09-18 4491 /*
ac35a490237446 Yu Zhao 2022-09-18 4492 * Try to make the obvious choice first. When anon and file are both
ac35a490237446 Yu Zhao 2022-09-18 4493 * available from the same generation, interpret swappiness 1 as file
ac35a490237446 Yu Zhao 2022-09-18 4494 * first and 200 as anon first.
ac35a490237446 Yu Zhao 2022-09-18 4495 */
9da842af0b17c7 Huan Yang 2023-11-08 4496 if (unlikely(unbalance_file_reclaim(sc, swappiness))) {
9da842af0b17c7 Huan Yang 2023-11-08 4497 unbalance = true;
9da842af0b17c7 Huan Yang 2023-11-08 4498 type = LRU_GEN_FILE;
9da842af0b17c7 Huan Yang 2023-11-08 4499 } else if (unlikely(unbalance_anon_reclaim(sc, swappiness))) {
9da842af0b17c7 Huan Yang 2023-11-08 4500 unbalance = true;
9da842af0b17c7 Huan Yang 2023-11-08 4501 type = LRU_GEN_ANON;
9da842af0b17c7 Huan Yang 2023-11-08 4502 } else if (!swappiness)
ac35a490237446 Yu Zhao 2022-09-18 4503 type = LRU_GEN_FILE;
ac35a490237446 Yu Zhao 2022-09-18 4504 else if (min_seq[LRU_GEN_ANON] < min_seq[LRU_GEN_FILE])
ac35a490237446 Yu Zhao 2022-09-18 4505 type = LRU_GEN_ANON;
ac35a490237446 Yu Zhao 2022-09-18 4506 else if (swappiness == 1)
ac35a490237446 Yu Zhao 2022-09-18 4507 type = LRU_GEN_FILE;
ac35a490237446 Yu Zhao 2022-09-18 4508 else if (swappiness == 200)
ac35a490237446 Yu Zhao 2022-09-18 4509 type = LRU_GEN_ANON;
ac35a490237446 Yu Zhao 2022-09-18 4510 else
ac35a490237446 Yu Zhao 2022-09-18 4511 type = get_type_to_scan(lruvec, swappiness, &tier);
ac35a490237446 Yu Zhao 2022-09-18 4512
ac35a490237446 Yu Zhao 2022-09-18 4513 for (i = !swappiness; i < ANON_AND_FILE; i++) {
ac35a490237446 Yu Zhao 2022-09-18 4514 if (tier < 0)
ac35a490237446 Yu Zhao 2022-09-18 4515 tier = get_tier_idx(lruvec, type);
ac35a490237446 Yu Zhao 2022-09-18 4516
ac35a490237446 Yu Zhao 2022-09-18 4517 scanned = scan_folios(lruvec, sc, type, tier, list);
9da842af0b17c7 Huan Yang 2023-11-08 @4518 if (scanned || unbalance)
^^^^^^^^^

ac35a490237446 Yu Zhao 2022-09-18 4519 break;
ac35a490237446 Yu Zhao 2022-09-18 4520
ac35a490237446 Yu Zhao 2022-09-18 4521 type = !type;
ac35a490237446 Yu Zhao 2022-09-18 4522 tier = -1;
ac35a490237446 Yu Zhao 2022-09-18 4523 }
ac35a490237446 Yu Zhao 2022-09-18 4524
ac35a490237446 Yu Zhao 2022-09-18 4525 *type_scanned = type;
ac35a490237446 Yu Zhao 2022-09-18 4526
ac35a490237446 Yu Zhao 2022-09-18 4527 return scanned;
ac35a490237446 Yu Zhao 2022-09-18 4528 }

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki