Hi Minchan, I love your patch! Perhaps something to improve: [auto build test WARNING on hnaz-mm/master] url: https://github.com/intel-lab-lkp/linux/commits/Minchan-Kim/mm-don-t-be-stuck-to-rmap-lock-on-reclaim-path/20220504-010625 base: https://github.com/hnaz/linux-mm master config: x86_64-randconfig-a013 (https://download.01.org/0day-ci/archive/20220504/202205041057.a78ABZ95-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.2.0-20) 11.2.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/0e190ce022ef259d63eb2cf50110b292ba17c79c git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Minchan-Kim/mm-don-t-be-stuck-to-rmap-lock-on-reclaim-path/20220504-010625 git checkout 0e190ce022ef259d63eb2cf50110b292ba17c79c # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): mm/page_idle.c: In function 'page_idle_clear_pte_refs': >> mm/page_idle.c:106:26: warning: passing argument 2 of 'rmap_walk' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 106 | rmap_walk(folio, &rwc); | ^~~~ In file included from mm/page_idle.c:11: include/linux/rmap.h:403:63: note: expected 'struct rmap_walk_control *' but argument is of type 'const struct rmap_walk_control *' 403 | void rmap_walk(struct folio *folio, struct rmap_walk_control *rwc); | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ vim +106 mm/page_idle.c 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 85 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 86 static void page_idle_clear_pte_refs(struct page *page) 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 87 { 4aed23a2f8aaaa Matthew Wilcox (Oracle 2022-01-29 88) struct folio *folio = page_folio(page); 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 89 /* 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 90 * Since rwc.arg is unused, rwc is effectively immutable, so we 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 91 * can make it static const to save some cycles and stack. 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 92 */ 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 93 static const struct rmap_walk_control rwc = { 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 94 .rmap_one = page_idle_clear_pte_refs_one, 2f031c6f042cb8 Matthew Wilcox (Oracle 2022-01-29 95) .anon_lock = folio_lock_anon_vma_read, 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 96 }; 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 97 bool need_lock; 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 98 4aed23a2f8aaaa Matthew Wilcox (Oracle 2022-01-29 99) if (!folio_mapped(folio) || !folio_raw_mapping(folio)) 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 100 return; 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 101 4aed23a2f8aaaa Matthew Wilcox (Oracle 2022-01-29 102) need_lock = !folio_test_anon(folio) || folio_test_ksm(folio); 4aed23a2f8aaaa Matthew Wilcox (Oracle 2022-01-29 103) if (need_lock && !folio_trylock(folio)) 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 104 return; 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 105 84fbbe21894bb9 Matthew Wilcox (Oracle 2022-01-29 @106) rmap_walk(folio, &rwc); 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 107 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 108 if (need_lock) 4aed23a2f8aaaa Matthew Wilcox (Oracle 2022-01-29 109) folio_unlock(folio); 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 110 } 33c3fc71c8cfa3 Vladimir Davydov 2015-09-09 111 -- 0-DAY CI Kernel Test Service https://01.org/lkp