Hi Jesper, kernel test robot noticed the following build errors: [auto build test ERROR on tj-cgroup/for-next] [also build test ERROR on axboe-block/for-next linus/master v6.11-rc7] [cannot apply to akpm-mm/mm-everything next-20240913] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Jesper-Dangaard-Brouer/cgroup-rstat-Avoid-flushing-if-there-is-an-ongoing-root-flush/20240913-010800 base: https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-next patch link: https://lore.kernel.org/r/172616070094.2055617.17676042522679701515.stgit%40firesoul patch subject: [PATCH V11] cgroup/rstat: Avoid flushing if there is an ongoing root flush config: i386-randconfig-141-20240914 (https://download.01.org/0day-ci/archive/20240914/202409140533.XqO09tth-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240914/202409140533.XqO09tth-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> | Closes: https://lore.kernel.org/oe-kbuild-all/202409140533.XqO09tth-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): mm/zswap.c: In function 'zswap_shrinker_count': >> mm/zswap.c:1225:17: error: implicit declaration of function 'mem_cgroup_flush_stats_relaxed'; did you mean 'mem_cgroup_flush_stats_ratelimited'? [-Werror=implicit-function-declaration] 1225 | mem_cgroup_flush_stats_relaxed(memcg); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | mem_cgroup_flush_stats_ratelimited cc1: some warnings being treated as errors vim +1225 mm/zswap.c 1197 1198 static unsigned long zswap_shrinker_count(struct shrinker *shrinker, 1199 struct shrink_control *sc) 1200 { 1201 struct mem_cgroup *memcg = sc->memcg; 1202 struct lruvec *lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(sc->nid)); 1203 unsigned long nr_backing, nr_stored, nr_freeable, nr_protected; 1204 1205 if (!zswap_shrinker_enabled || !mem_cgroup_zswap_writeback_enabled(memcg)) 1206 return 0; 1207 1208 /* 1209 * The shrinker resumes swap writeback, which will enter block 1210 * and may enter fs. XXX: Harmonize with vmscan.c __GFP_FS 1211 * rules (may_enter_fs()), which apply on a per-folio basis. 1212 */ 1213 if (!gfp_has_io_fs(sc->gfp_mask)) 1214 return 0; 1215 1216 /* 1217 * For memcg, use the cgroup-wide ZSWAP stats since we don't 1218 * have them per-node and thus per-lruvec. Careful if memcg is 1219 * runtime-disabled: we can get sc->memcg == NULL, which is ok 1220 * for the lruvec, but not for memcg_page_state(). 1221 * 1222 * Without memcg, use the zswap pool-wide metrics. 1223 */ 1224 if (!mem_cgroup_disabled()) { > 1225 mem_cgroup_flush_stats_relaxed(memcg); 1226 nr_backing = memcg_page_state(memcg, MEMCG_ZSWAP_B) >> PAGE_SHIFT; 1227 nr_stored = memcg_page_state(memcg, MEMCG_ZSWAPPED); 1228 } else { 1229 nr_backing = zswap_total_pages(); 1230 nr_stored = atomic_read(&zswap_stored_pages); 1231 } 1232 1233 if (!nr_stored) 1234 return 0; 1235 1236 nr_protected = 1237 atomic_long_read(&lruvec->zswap_lruvec_state.nr_zswap_protected); 1238 nr_freeable = list_lru_shrink_count(&zswap_list_lru, sc); 1239 /* 1240 * Subtract the lru size by an estimate of the number of pages 1241 * that should be protected. 1242 */ 1243 nr_freeable = nr_freeable > nr_protected ? nr_freeable - nr_protected : 0; 1244 1245 /* 1246 * Scale the number of freeable pages by the memory saving factor. 1247 * This ensures that the better zswap compresses memory, the fewer 1248 * pages we will evict to swap (as it will otherwise incur IO for 1249 * relatively small memory saving). 1250 * 1251 * The memory saving factor calculated here takes same-filled pages into 1252 * account, but those are not freeable since they almost occupy no 1253 * space. Hence, we may scale nr_freeable down a little bit more than we 1254 * should if we have a lot of same-filled pages. 1255 */ 1256 return mult_frac(nr_freeable, nr_backing, nr_stored); 1257 } 1258 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki