linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [linux-next:master 12342/12641] mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'?
@ 2019-07-05 13:09 kbuild test robot
  2019-07-05 21:20 ` Andrew Morton
  0 siblings, 1 reply; 5+ messages in thread
From: kbuild test robot @ 2019-07-05 13:09 UTC (permalink / raw)
  To: Yang Shi; +Cc: kbuild-all, Andrew Morton, Linux Memory Management List

[-- Attachment #1: Type: text/plain, Size: 17984 bytes --]

tree:   https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git master
head:   22c45ec32b4a9fa8c48ef4f5bf9b189b307aae12
commit: 8236f517d69e2217f5200d7f700e8b18b01c94c8 [12342/12641] mm: shrinker: make shrinker not depend on memcg kmem
config: x86_64-randconfig-s2-07051907 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-9) 7.4.0
reproduce:
        git checkout 8236f517d69e2217f5200d7f700e8b18b01c94c8
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   mm/vmscan.c: In function 'prealloc_memcg_shrinker':
>> mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'? [-Werror=implicit-function-declaration]
      if (memcg_expand_shrinker_maps(id)) {
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
          memcg_set_shrinker_bit
   In file included from include/linux/rbtree.h:22:0,
                    from include/linux/mm_types.h:10,
                    from include/linux/mmzone.h:21,
                    from include/linux/gfp.h:6,
                    from include/linux/mm.h:10,
                    from mm/vmscan.c:17:
   mm/vmscan.c: In function 'shrink_slab_memcg':
>> mm/vmscan.c:593:54: error: 'struct mem_cgroup_per_node' has no member named 'shrinker_map'
     map = rcu_dereference_protected(memcg->nodeinfo[nid]->shrinker_map,
                                                         ^
   include/linux/rcupdate.h:321:12: note: in definition of macro '__rcu_dereference_protected'
     ((typeof(*p) __force __kernel *)(p)); \
               ^
>> mm/vmscan.c:593:8: note: in expansion of macro 'rcu_dereference_protected'
     map = rcu_dereference_protected(memcg->nodeinfo[nid]->shrinker_map,
           ^~~~~~~~~~~~~~~~~~~~~~~~~
>> mm/vmscan.c:593:54: error: 'struct mem_cgroup_per_node' has no member named 'shrinker_map'
     map = rcu_dereference_protected(memcg->nodeinfo[nid]->shrinker_map,
                                                         ^
   include/linux/rcupdate.h:321:35: note: in definition of macro '__rcu_dereference_protected'
     ((typeof(*p) __force __kernel *)(p)); \
                                      ^
>> mm/vmscan.c:593:8: note: in expansion of macro 'rcu_dereference_protected'
     map = rcu_dereference_protected(memcg->nodeinfo[nid]->shrinker_map,
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +205 mm/vmscan.c

b1de0d139 Mitchel Humpherys     2014-06-06   16  
^1da177e4 Linus Torvalds        2005-04-16  @17  #include <linux/mm.h>
5b3cc15af Ingo Molnar           2017-02-02   18  #include <linux/sched/mm.h>
^1da177e4 Linus Torvalds        2005-04-16   19  #include <linux/module.h>
5a0e3ad6a Tejun Heo             2010-03-24   20  #include <linux/gfp.h>
^1da177e4 Linus Torvalds        2005-04-16   21  #include <linux/kernel_stat.h>
^1da177e4 Linus Torvalds        2005-04-16   22  #include <linux/swap.h>
^1da177e4 Linus Torvalds        2005-04-16   23  #include <linux/pagemap.h>
^1da177e4 Linus Torvalds        2005-04-16   24  #include <linux/init.h>
^1da177e4 Linus Torvalds        2005-04-16   25  #include <linux/highmem.h>
70ddf637e Anton Vorontsov       2013-04-29   26  #include <linux/vmpressure.h>
e129b5c23 Andrew Morton         2006-09-27   27  #include <linux/vmstat.h>
^1da177e4 Linus Torvalds        2005-04-16   28  #include <linux/file.h>
^1da177e4 Linus Torvalds        2005-04-16   29  #include <linux/writeback.h>
^1da177e4 Linus Torvalds        2005-04-16   30  #include <linux/blkdev.h>
^1da177e4 Linus Torvalds        2005-04-16   31  #include <linux/buffer_head.h>	/* for try_to_release_page(),
^1da177e4 Linus Torvalds        2005-04-16   32  					buffer_heads_over_limit */
^1da177e4 Linus Torvalds        2005-04-16   33  #include <linux/mm_inline.h>
^1da177e4 Linus Torvalds        2005-04-16   34  #include <linux/backing-dev.h>
^1da177e4 Linus Torvalds        2005-04-16   35  #include <linux/rmap.h>
^1da177e4 Linus Torvalds        2005-04-16   36  #include <linux/topology.h>
^1da177e4 Linus Torvalds        2005-04-16   37  #include <linux/cpu.h>
^1da177e4 Linus Torvalds        2005-04-16   38  #include <linux/cpuset.h>
3e7d34497 Mel Gorman            2011-01-13   39  #include <linux/compaction.h>
^1da177e4 Linus Torvalds        2005-04-16   40  #include <linux/notifier.h>
^1da177e4 Linus Torvalds        2005-04-16   41  #include <linux/rwsem.h>
248a0301e Rafael J. Wysocki     2006-03-22   42  #include <linux/delay.h>
3218ae14b Yasunori Goto         2006-06-27   43  #include <linux/kthread.h>
7dfb71030 Nigel Cunningham      2006-12-06   44  #include <linux/freezer.h>
66e1707bc Balbir Singh          2008-02-07   45  #include <linux/memcontrol.h>
873b47717 Keika Kobayashi       2008-07-25   46  #include <linux/delayacct.h>
af936a160 Lee Schermerhorn      2008-10-18   47  #include <linux/sysctl.h>
929bea7c7 KOSAKI Motohiro       2011-04-14   48  #include <linux/oom.h>
64e3d12f7 Kuo-Hsin Yang         2018-11-06   49  #include <linux/pagevec.h>
268bb0ce3 Linus Torvalds        2011-05-20   50  #include <linux/prefetch.h>
b1de0d139 Mitchel Humpherys     2014-06-06   51  #include <linux/printk.h>
f9fe48bec Ross Zwisler          2016-01-22   52  #include <linux/dax.h>
eb414681d Johannes Weiner       2018-10-26   53  #include <linux/psi.h>
^1da177e4 Linus Torvalds        2005-04-16   54  
^1da177e4 Linus Torvalds        2005-04-16   55  #include <asm/tlbflush.h>
^1da177e4 Linus Torvalds        2005-04-16   56  #include <asm/div64.h>
^1da177e4 Linus Torvalds        2005-04-16   57  
^1da177e4 Linus Torvalds        2005-04-16   58  #include <linux/swapops.h>
117aad1e9 Rafael Aquini         2013-09-30   59  #include <linux/balloon_compaction.h>
^1da177e4 Linus Torvalds        2005-04-16   60  
0f8053a50 Nick Piggin           2006-03-22   61  #include "internal.h"
0f8053a50 Nick Piggin           2006-03-22   62  
33906bc5c Mel Gorman            2010-08-09   63  #define CREATE_TRACE_POINTS
33906bc5c Mel Gorman            2010-08-09   64  #include <trace/events/vmscan.h>
33906bc5c Mel Gorman            2010-08-09   65  
^1da177e4 Linus Torvalds        2005-04-16   66  struct scan_control {
22fba3354 KOSAKI Motohiro       2009-12-14   67  	/* How many pages shrink_list() should reclaim */
22fba3354 KOSAKI Motohiro       2009-12-14   68  	unsigned long nr_to_reclaim;
22fba3354 KOSAKI Motohiro       2009-12-14   69  
ee814fe23 Johannes Weiner       2014-08-06   70  	/*
ee814fe23 Johannes Weiner       2014-08-06   71  	 * Nodemask of nodes allowed by the caller. If NULL, all nodes
ee814fe23 Johannes Weiner       2014-08-06   72  	 * are scanned.
ee814fe23 Johannes Weiner       2014-08-06   73  	 */
ee814fe23 Johannes Weiner       2014-08-06   74  	nodemask_t	*nodemask;
9e3b2f8cd Konstantin Khlebnikov 2012-05-29   75  
5f53e7629 KOSAKI Motohiro       2010-05-24   76  	/*
f16015fbf Johannes Weiner       2012-01-12   77  	 * The memory cgroup that hit its limit and as a result is the
f16015fbf Johannes Weiner       2012-01-12   78  	 * primary target of this reclaim invocation.
f16015fbf Johannes Weiner       2012-01-12   79  	 */
f16015fbf Johannes Weiner       2012-01-12   80  	struct mem_cgroup *target_mem_cgroup;
66e1707bc Balbir Singh          2008-02-07   81  
1276ad68e Johannes Weiner       2017-02-24   82  	/* Writepage batching in laptop mode; RECLAIM_WRITE */
ee814fe23 Johannes Weiner       2014-08-06   83  	unsigned int may_writepage:1;
ee814fe23 Johannes Weiner       2014-08-06   84  
ee814fe23 Johannes Weiner       2014-08-06   85  	/* Can mapped pages be reclaimed? */
ee814fe23 Johannes Weiner       2014-08-06   86  	unsigned int may_unmap:1;
ee814fe23 Johannes Weiner       2014-08-06   87  
ee814fe23 Johannes Weiner       2014-08-06   88  	/* Can pages be swapped as part of reclaim? */
ee814fe23 Johannes Weiner       2014-08-06   89  	unsigned int may_swap:1;
ee814fe23 Johannes Weiner       2014-08-06   90  
1c30844d2 Mel Gorman            2018-12-28   91  	/* e.g. boosted watermark reclaim leaves slabs alone */
1c30844d2 Mel Gorman            2018-12-28   92  	unsigned int may_shrinkslab:1;
1c30844d2 Mel Gorman            2018-12-28   93  
d6622f636 Yisheng Xie           2017-05-03   94  	/*
d6622f636 Yisheng Xie           2017-05-03   95  	 * Cgroups are not reclaimed below their configured memory.low,
d6622f636 Yisheng Xie           2017-05-03   96  	 * unless we threaten to OOM. If any cgroups are skipped due to
d6622f636 Yisheng Xie           2017-05-03   97  	 * memory.low and nothing was reclaimed, go back for memory.low.
d6622f636 Yisheng Xie           2017-05-03   98  	 */
d6622f636 Yisheng Xie           2017-05-03   99  	unsigned int memcg_low_reclaim:1;
d6622f636 Yisheng Xie           2017-05-03  100  	unsigned int memcg_low_skipped:1;
241994ed8 Johannes Weiner       2015-02-11  101  
ee814fe23 Johannes Weiner       2014-08-06  102  	unsigned int hibernation_mode:1;
ee814fe23 Johannes Weiner       2014-08-06  103  
ee814fe23 Johannes Weiner       2014-08-06  104  	/* One of the zones is ready for compaction */
ee814fe23 Johannes Weiner       2014-08-06  105  	unsigned int compaction_ready:1;
ee814fe23 Johannes Weiner       2014-08-06  106  
bb451fdf3 Greg Thelen           2018-08-17  107  	/* Allocation order */
bb451fdf3 Greg Thelen           2018-08-17  108  	s8 order;
bb451fdf3 Greg Thelen           2018-08-17  109  
bb451fdf3 Greg Thelen           2018-08-17  110  	/* Scan (total_size >> priority) pages at once */
bb451fdf3 Greg Thelen           2018-08-17  111  	s8 priority;
bb451fdf3 Greg Thelen           2018-08-17  112  
bb451fdf3 Greg Thelen           2018-08-17  113  	/* The highest zone to isolate pages for reclaim from */
bb451fdf3 Greg Thelen           2018-08-17  114  	s8 reclaim_idx;
bb451fdf3 Greg Thelen           2018-08-17  115  
bb451fdf3 Greg Thelen           2018-08-17  116  	/* This context's GFP mask */
bb451fdf3 Greg Thelen           2018-08-17  117  	gfp_t gfp_mask;
bb451fdf3 Greg Thelen           2018-08-17  118  
ee814fe23 Johannes Weiner       2014-08-06  119  	/* Incremented by the number of inactive pages that were scanned */
ee814fe23 Johannes Weiner       2014-08-06  120  	unsigned long nr_scanned;
ee814fe23 Johannes Weiner       2014-08-06  121  
ee814fe23 Johannes Weiner       2014-08-06  122  	/* Number of pages freed so far during a call to shrink_zones() */
ee814fe23 Johannes Weiner       2014-08-06  123  	unsigned long nr_reclaimed;
d108c7721 Andrey Ryabinin       2018-04-10  124  
d108c7721 Andrey Ryabinin       2018-04-10  125  	struct {
d108c7721 Andrey Ryabinin       2018-04-10  126  		unsigned int dirty;
d108c7721 Andrey Ryabinin       2018-04-10  127  		unsigned int unqueued_dirty;
d108c7721 Andrey Ryabinin       2018-04-10  128  		unsigned int congested;
d108c7721 Andrey Ryabinin       2018-04-10  129  		unsigned int writeback;
d108c7721 Andrey Ryabinin       2018-04-10  130  		unsigned int immediate;
d108c7721 Andrey Ryabinin       2018-04-10  131  		unsigned int file_taken;
d108c7721 Andrey Ryabinin       2018-04-10  132  		unsigned int taken;
d108c7721 Andrey Ryabinin       2018-04-10  133  	} nr;
^1da177e4 Linus Torvalds        2005-04-16  134  };
^1da177e4 Linus Torvalds        2005-04-16  135  
^1da177e4 Linus Torvalds        2005-04-16  136  #ifdef ARCH_HAS_PREFETCH
^1da177e4 Linus Torvalds        2005-04-16  137  #define prefetch_prev_lru_page(_page, _base, _field)			\
^1da177e4 Linus Torvalds        2005-04-16  138  	do {								\
^1da177e4 Linus Torvalds        2005-04-16  139  		if ((_page)->lru.prev != _base) {			\
^1da177e4 Linus Torvalds        2005-04-16  140  			struct page *prev;				\
^1da177e4 Linus Torvalds        2005-04-16  141  									\
^1da177e4 Linus Torvalds        2005-04-16  142  			prev = lru_to_page(&(_page->lru));		\
^1da177e4 Linus Torvalds        2005-04-16  143  			prefetch(&prev->_field);			\
^1da177e4 Linus Torvalds        2005-04-16  144  		}							\
^1da177e4 Linus Torvalds        2005-04-16  145  	} while (0)
^1da177e4 Linus Torvalds        2005-04-16  146  #else
^1da177e4 Linus Torvalds        2005-04-16  147  #define prefetch_prev_lru_page(_page, _base, _field) do { } while (0)
^1da177e4 Linus Torvalds        2005-04-16  148  #endif
^1da177e4 Linus Torvalds        2005-04-16  149  
^1da177e4 Linus Torvalds        2005-04-16  150  #ifdef ARCH_HAS_PREFETCHW
^1da177e4 Linus Torvalds        2005-04-16  151  #define prefetchw_prev_lru_page(_page, _base, _field)			\
^1da177e4 Linus Torvalds        2005-04-16  152  	do {								\
^1da177e4 Linus Torvalds        2005-04-16  153  		if ((_page)->lru.prev != _base) {			\
^1da177e4 Linus Torvalds        2005-04-16  154  			struct page *prev;				\
^1da177e4 Linus Torvalds        2005-04-16  155  									\
^1da177e4 Linus Torvalds        2005-04-16  156  			prev = lru_to_page(&(_page->lru));		\
^1da177e4 Linus Torvalds        2005-04-16  157  			prefetchw(&prev->_field);			\
^1da177e4 Linus Torvalds        2005-04-16  158  		}							\
^1da177e4 Linus Torvalds        2005-04-16  159  	} while (0)
^1da177e4 Linus Torvalds        2005-04-16  160  #else
^1da177e4 Linus Torvalds        2005-04-16  161  #define prefetchw_prev_lru_page(_page, _base, _field) do { } while (0)
^1da177e4 Linus Torvalds        2005-04-16  162  #endif
^1da177e4 Linus Torvalds        2005-04-16  163  
^1da177e4 Linus Torvalds        2005-04-16  164  /*
^1da177e4 Linus Torvalds        2005-04-16  165   * From 0 .. 100.  Higher means more swappy.
^1da177e4 Linus Torvalds        2005-04-16  166   */
^1da177e4 Linus Torvalds        2005-04-16  167  int vm_swappiness = 60;
d0480be44 Wang Sheng-Hui        2014-08-06  168  /*
d0480be44 Wang Sheng-Hui        2014-08-06  169   * The total number of pages which are beyond the high watermark within all
d0480be44 Wang Sheng-Hui        2014-08-06  170   * zones.
d0480be44 Wang Sheng-Hui        2014-08-06  171   */
d0480be44 Wang Sheng-Hui        2014-08-06  172  unsigned long vm_total_pages;
^1da177e4 Linus Torvalds        2005-04-16  173  
^1da177e4 Linus Torvalds        2005-04-16  174  static LIST_HEAD(shrinker_list);
^1da177e4 Linus Torvalds        2005-04-16  175  static DECLARE_RWSEM(shrinker_rwsem);
^1da177e4 Linus Torvalds        2005-04-16  176  
8236f517d Yang Shi              2019-07-05  177  #ifdef CONFIG_MEMCG
7e010df53 Kirill Tkhai          2018-08-17  178  /*
7e010df53 Kirill Tkhai          2018-08-17  179   * We allow subsystems to populate their shrinker-related
7e010df53 Kirill Tkhai          2018-08-17  180   * LRU lists before register_shrinker_prepared() is called
7e010df53 Kirill Tkhai          2018-08-17  181   * for the shrinker, since we don't want to impose
7e010df53 Kirill Tkhai          2018-08-17  182   * restrictions on their internal registration order.
7e010df53 Kirill Tkhai          2018-08-17  183   * In this case shrink_slab_memcg() may find corresponding
7e010df53 Kirill Tkhai          2018-08-17  184   * bit is set in the shrinkers map.
7e010df53 Kirill Tkhai          2018-08-17  185   *
7e010df53 Kirill Tkhai          2018-08-17  186   * This value is used by the function to detect registering
7e010df53 Kirill Tkhai          2018-08-17  187   * shrinkers and to skip do_shrink_slab() calls for them.
7e010df53 Kirill Tkhai          2018-08-17  188   */
7e010df53 Kirill Tkhai          2018-08-17  189  #define SHRINKER_REGISTERING ((struct shrinker *)~0UL)
7e010df53 Kirill Tkhai          2018-08-17  190  
b4c2b231c Kirill Tkhai          2018-08-17  191  static DEFINE_IDR(shrinker_idr);
b4c2b231c Kirill Tkhai          2018-08-17  192  static int shrinker_nr_max;
b4c2b231c Kirill Tkhai          2018-08-17  193  
b4c2b231c Kirill Tkhai          2018-08-17  194  static int prealloc_memcg_shrinker(struct shrinker *shrinker)
b4c2b231c Kirill Tkhai          2018-08-17  195  {
b4c2b231c Kirill Tkhai          2018-08-17  196  	int id, ret = -ENOMEM;
b4c2b231c Kirill Tkhai          2018-08-17  197  
b4c2b231c Kirill Tkhai          2018-08-17  198  	down_write(&shrinker_rwsem);
b4c2b231c Kirill Tkhai          2018-08-17  199  	/* This may call shrinker, so it must use down_read_trylock() */
7e010df53 Kirill Tkhai          2018-08-17  200  	id = idr_alloc(&shrinker_idr, SHRINKER_REGISTERING, 0, 0, GFP_KERNEL);
b4c2b231c Kirill Tkhai          2018-08-17  201  	if (id < 0)
b4c2b231c Kirill Tkhai          2018-08-17  202  		goto unlock;
b4c2b231c Kirill Tkhai          2018-08-17  203  
0a4465d34 Kirill Tkhai          2018-08-17  204  	if (id >= shrinker_nr_max) {
0a4465d34 Kirill Tkhai          2018-08-17 @205  		if (memcg_expand_shrinker_maps(id)) {
0a4465d34 Kirill Tkhai          2018-08-17  206  			idr_remove(&shrinker_idr, id);
0a4465d34 Kirill Tkhai          2018-08-17  207  			goto unlock;
0a4465d34 Kirill Tkhai          2018-08-17  208  		}
0a4465d34 Kirill Tkhai          2018-08-17  209  
b4c2b231c Kirill Tkhai          2018-08-17  210  		shrinker_nr_max = id + 1;
0a4465d34 Kirill Tkhai          2018-08-17  211  	}
b4c2b231c Kirill Tkhai          2018-08-17  212  	shrinker->id = id;
b4c2b231c Kirill Tkhai          2018-08-17  213  	ret = 0;
b4c2b231c Kirill Tkhai          2018-08-17  214  unlock:
b4c2b231c Kirill Tkhai          2018-08-17  215  	up_write(&shrinker_rwsem);
b4c2b231c Kirill Tkhai          2018-08-17  216  	return ret;
b4c2b231c Kirill Tkhai          2018-08-17  217  }
b4c2b231c Kirill Tkhai          2018-08-17  218  

:::::: The code at line 205 was first introduced by commit
:::::: 0a4465d340282f92719f4e3a56545a848e638d15 mm, memcg: assign memcg-aware shrinkers bitmap to memcg

:::::: TO: Kirill Tkhai <ktkhai@virtuozzo.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28248 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [linux-next:master 12342/12641] mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'?
  2019-07-05 13:09 [linux-next:master 12342/12641] mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'? kbuild test robot
@ 2019-07-05 21:20 ` Andrew Morton
  2019-07-05 22:16   ` Randy Dunlap
  2019-07-06  2:13   ` Randy Dunlap
  0 siblings, 2 replies; 5+ messages in thread
From: Andrew Morton @ 2019-07-05 21:20 UTC (permalink / raw)
  To: kbuild test robot; +Cc: Yang Shi, kbuild-all, Linux Memory Management List

On Fri, 5 Jul 2019 21:09:24 +0800 kbuild test robot <lkp@intel.com> wrote:

> tree:   https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   22c45ec32b4a9fa8c48ef4f5bf9b189b307aae12
> commit: 8236f517d69e2217f5200d7f700e8b18b01c94c8 [12342/12641] mm: shrinker: make shrinker not depend on memcg kmem
> config: x86_64-randconfig-s2-07051907 (attached as .config)
> compiler: gcc-7 (Debian 7.4.0-9) 7.4.0
> reproduce:
>         git checkout 8236f517d69e2217f5200d7f700e8b18b01c94c8
>         # save the attached .config to linux build tree
>         make ARCH=x86_64 
> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
> 
> All error/warnings (new ones prefixed by >>):
> 
>    mm/vmscan.c: In function 'prealloc_memcg_shrinker':
> >> mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'? [-Werror=implicit-function-declaration]
>       if (memcg_expand_shrinker_maps(id)) {
>           ^~~~~~~~~~~~~~~~~~~~~~~~~~
>           memcg_set_shrinker_bit
>    In file included from include/linux/rbtree.h:22:0,
>                     from include/linux/mm_types.h:10,
>                     from include/linux/mmzone.h:21,
>                     from include/linux/gfp.h:6,
>                     from include/linux/mm.h:10,
>                     from mm/vmscan.c:17:
>    mm/vmscan.c: In function 'shrink_slab_memcg':
> >> mm/vmscan.c:593:54: error: 'struct mem_cgroup_per_node' has no member named 'shrinker_map'

This?

--- a/include/linux/memcontrol.h~mm-shrinker-make-shrinker-not-depend-on-memcg-kmem-fix
+++ a/include/linux/memcontrol.h
@@ -128,7 +128,7 @@ struct mem_cgroup_per_node {
 
 	struct mem_cgroup_reclaim_iter	iter[DEF_PRIORITY + 1];
 
-#ifdef CONFIG_MEMCG_KMEM
+#ifdef CONFIG_MEMCG
 	struct memcg_shrinker_map __rcu	*shrinker_map;
 #endif
 	struct rb_node		tree_node;	/* RB tree node */
@@ -1272,6 +1272,7 @@ static inline bool mem_cgroup_under_sock
 
 struct kmem_cache *memcg_kmem_get_cache(struct kmem_cache *cachep);
 void memcg_kmem_put_cache(struct kmem_cache *cachep);
+extern int memcg_expand_shrinker_maps(int new_id);
 
 #ifdef CONFIG_MEMCG_KMEM
 int __memcg_kmem_charge(struct page *page, gfp_t gfp, int order);
@@ -1339,8 +1340,6 @@ static inline int memcg_cache_id(struct
 	return memcg ? memcg->kmemcg_id : -1;
 }
 
-extern int memcg_expand_shrinker_maps(int new_id);
-
 extern void memcg_set_shrinker_bit(struct mem_cgroup *memcg,
 				   int nid, int shrinker_id);
 #else
_


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [linux-next:master 12342/12641] mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'?
  2019-07-05 21:20 ` Andrew Morton
@ 2019-07-05 22:16   ` Randy Dunlap
  2019-07-06  2:14     ` Randy Dunlap
  2019-07-06  2:13   ` Randy Dunlap
  1 sibling, 1 reply; 5+ messages in thread
From: Randy Dunlap @ 2019-07-05 22:16 UTC (permalink / raw)
  To: Andrew Morton, kbuild test robot
  Cc: Yang Shi, kbuild-all, Linux Memory Management List

On 7/5/19 2:20 PM, Andrew Morton wrote:
> On Fri, 5 Jul 2019 21:09:24 +0800 kbuild test robot <lkp@intel.com> wrote:
> 
>> tree:   https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git master
>> head:   22c45ec32b4a9fa8c48ef4f5bf9b189b307aae12
>> commit: 8236f517d69e2217f5200d7f700e8b18b01c94c8 [12342/12641] mm: shrinker: make shrinker not depend on memcg kmem
>> config: x86_64-randconfig-s2-07051907 (attached as .config)
>> compiler: gcc-7 (Debian 7.4.0-9) 7.4.0
>> reproduce:
>>         git checkout 8236f517d69e2217f5200d7f700e8b18b01c94c8
>>         # save the attached .config to linux build tree
>>         make ARCH=x86_64 
>>
>> If you fix the issue, kindly add following tag
>> Reported-by: kbuild test robot <lkp@intel.com>
>>
>> All error/warnings (new ones prefixed by >>):
>>
>>    mm/vmscan.c: In function 'prealloc_memcg_shrinker':
>>>> mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'? [-Werror=implicit-function-declaration]
>>       if (memcg_expand_shrinker_maps(id)) {
>>           ^~~~~~~~~~~~~~~~~~~~~~~~~~
>>           memcg_set_shrinker_bit
>>    In file included from include/linux/rbtree.h:22:0,
>>                     from include/linux/mm_types.h:10,
>>                     from include/linux/mmzone.h:21,
>>                     from include/linux/gfp.h:6,
>>                     from include/linux/mm.h:10,
>>                     from mm/vmscan.c:17:
>>    mm/vmscan.c: In function 'shrink_slab_memcg':
>>>> mm/vmscan.c:593:54: error: 'struct mem_cgroup_per_node' has no member named 'shrinker_map'
> 
> This?
> 
> --- a/include/linux/memcontrol.h~mm-shrinker-make-shrinker-not-depend-on-memcg-kmem-fix
> +++ a/include/linux/memcontrol.h
> @@ -128,7 +128,7 @@ struct mem_cgroup_per_node {
>  
>  	struct mem_cgroup_reclaim_iter	iter[DEF_PRIORITY + 1];
>  
> -#ifdef CONFIG_MEMCG_KMEM
> +#ifdef CONFIG_MEMCG
>  	struct memcg_shrinker_map __rcu	*shrinker_map;
>  #endif
>  	struct rb_node		tree_node;	/* RB tree node */
> @@ -1272,6 +1272,7 @@ static inline bool mem_cgroup_under_sock
>  
>  struct kmem_cache *memcg_kmem_get_cache(struct kmem_cache *cachep);
>  void memcg_kmem_put_cache(struct kmem_cache *cachep);
> +extern int memcg_expand_shrinker_maps(int new_id);
>  
>  #ifdef CONFIG_MEMCG_KMEM
>  int __memcg_kmem_charge(struct page *page, gfp_t gfp, int order);
> @@ -1339,8 +1340,6 @@ static inline int memcg_cache_id(struct
>  	return memcg ? memcg->kmemcg_id : -1;
>  }
>  
> -extern int memcg_expand_shrinker_maps(int new_id);
> -
>  extern void memcg_set_shrinker_bit(struct mem_cgroup *memcg,
>  				   int nid, int shrinker_id);
>  #else
> _
> 

Now I see this:

ld: mm/vmscan.o: in function `prealloc_shrinker':
vmscan.c:(.text+0x3090): undefined reference to `memcg_expand_shrinker_maps'


And for the record, I reported this yesterday on mmotm:
https://lore.kernel.org/lkml/9cbdb785-b51d-9419-6b9a-ec282a4e4fa2@infradead.org/

Reported-by: Randy Dunlap <rdunlap@infradead.org>


thanks,
-- 
~Randy


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [linux-next:master 12342/12641] mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'?
  2019-07-05 21:20 ` Andrew Morton
  2019-07-05 22:16   ` Randy Dunlap
@ 2019-07-06  2:13   ` Randy Dunlap
  1 sibling, 0 replies; 5+ messages in thread
From: Randy Dunlap @ 2019-07-06  2:13 UTC (permalink / raw)
  To: Andrew Morton, kbuild test robot
  Cc: Yang Shi, kbuild-all, Linux Memory Management List

On 7/5/19 2:20 PM, Andrew Morton wrote:
> On Fri, 5 Jul 2019 21:09:24 +0800 kbuild test robot <lkp@intel.com> wrote:
> 
>> tree:   https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git master
>> head:   22c45ec32b4a9fa8c48ef4f5bf9b189b307aae12
>> commit: 8236f517d69e2217f5200d7f700e8b18b01c94c8 [12342/12641] mm: shrinker: make shrinker not depend on memcg kmem
>> config: x86_64-randconfig-s2-07051907 (attached as .config)
>> compiler: gcc-7 (Debian 7.4.0-9) 7.4.0
>> reproduce:
>>         git checkout 8236f517d69e2217f5200d7f700e8b18b01c94c8
>>         # save the attached .config to linux build tree
>>         make ARCH=x86_64 
>>
>> If you fix the issue, kindly add following tag
>> Reported-by: kbuild test robot <lkp@intel.com>
>>
>> All error/warnings (new ones prefixed by >>):
>>
>>    mm/vmscan.c: In function 'prealloc_memcg_shrinker':
>>>> mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'? [-Werror=implicit-function-declaration]
>>       if (memcg_expand_shrinker_maps(id)) {
>>           ^~~~~~~~~~~~~~~~~~~~~~~~~~
>>           memcg_set_shrinker_bit
>>    In file included from include/linux/rbtree.h:22:0,
>>                     from include/linux/mm_types.h:10,
>>                     from include/linux/mmzone.h:21,
>>                     from include/linux/gfp.h:6,
>>                     from include/linux/mm.h:10,
>>                     from mm/vmscan.c:17:
>>    mm/vmscan.c: In function 'shrink_slab_memcg':
>>>> mm/vmscan.c:593:54: error: 'struct mem_cgroup_per_node' has no member named 'shrinker_map'
> 
> This?
> 
> --- a/include/linux/memcontrol.h~mm-shrinker-make-shrinker-not-depend-on-memcg-kmem-fix
> +++ a/include/linux/memcontrol.h
> @@ -128,7 +128,7 @@ struct mem_cgroup_per_node {
>  
>  	struct mem_cgroup_reclaim_iter	iter[DEF_PRIORITY + 1];
>  
> -#ifdef CONFIG_MEMCG_KMEM
> +#ifdef CONFIG_MEMCG
>  	struct memcg_shrinker_map __rcu	*shrinker_map;
>  #endif
>  	struct rb_node		tree_node;	/* RB tree node */
> @@ -1272,6 +1272,7 @@ static inline bool mem_cgroup_under_sock
>  
>  struct kmem_cache *memcg_kmem_get_cache(struct kmem_cache *cachep);
>  void memcg_kmem_put_cache(struct kmem_cache *cachep);
> +extern int memcg_expand_shrinker_maps(int new_id);
>  
>  #ifdef CONFIG_MEMCG_KMEM
>  int __memcg_kmem_charge(struct page *page, gfp_t gfp, int order);
> @@ -1339,8 +1340,6 @@ static inline int memcg_cache_id(struct
>  	return memcg ? memcg->kmemcg_id : -1;
>  }
>  
> -extern int memcg_expand_shrinker_maps(int new_id);
> -
>  extern void memcg_set_shrinker_bit(struct mem_cgroup *memcg,
>  				   int nid, int shrinker_id);
>  #else
> _
> 

I suggest that someone drop these patches until they are better.

E.g., in include/linux/memcontrol.h:

65: #ifdef CONFIG_MEMCG
131: #ifdef CONFIG_MEMCG
133: #endif
802: #else /* CONFIG_MEMCG */
1138: #endif /* CONFIG_MEMCG */

so lines 131 & 133 are redundant.

-- 
~Randy


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [linux-next:master 12342/12641] mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'?
  2019-07-05 22:16   ` Randy Dunlap
@ 2019-07-06  2:14     ` Randy Dunlap
  0 siblings, 0 replies; 5+ messages in thread
From: Randy Dunlap @ 2019-07-06  2:14 UTC (permalink / raw)
  To: Andrew Morton, kbuild test robot
  Cc: Yang Shi, kbuild-all, Linux Memory Management List

On 7/5/19 3:16 PM, Randy Dunlap wrote:
> On 7/5/19 2:20 PM, Andrew Morton wrote:
>> On Fri, 5 Jul 2019 21:09:24 +0800 kbuild test robot <lkp@intel.com> wrote:
>>
>>> tree:   https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git master
>>> head:   22c45ec32b4a9fa8c48ef4f5bf9b189b307aae12
>>> commit: 8236f517d69e2217f5200d7f700e8b18b01c94c8 [12342/12641] mm: shrinker: make shrinker not depend on memcg kmem
>>> config: x86_64-randconfig-s2-07051907 (attached as .config)
>>> compiler: gcc-7 (Debian 7.4.0-9) 7.4.0
>>> reproduce:
>>>         git checkout 8236f517d69e2217f5200d7f700e8b18b01c94c8
>>>         # save the attached .config to linux build tree
>>>         make ARCH=x86_64 
>>>
>>> If you fix the issue, kindly add following tag
>>> Reported-by: kbuild test robot <lkp@intel.com>
>>>
>>> All error/warnings (new ones prefixed by >>):
>>>
>>>    mm/vmscan.c: In function 'prealloc_memcg_shrinker':
>>>>> mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'? [-Werror=implicit-function-declaration]
>>>       if (memcg_expand_shrinker_maps(id)) {
>>>           ^~~~~~~~~~~~~~~~~~~~~~~~~~
>>>           memcg_set_shrinker_bit
>>>    In file included from include/linux/rbtree.h:22:0,
>>>                     from include/linux/mm_types.h:10,
>>>                     from include/linux/mmzone.h:21,
>>>                     from include/linux/gfp.h:6,
>>>                     from include/linux/mm.h:10,
>>>                     from mm/vmscan.c:17:
>>>    mm/vmscan.c: In function 'shrink_slab_memcg':
>>>>> mm/vmscan.c:593:54: error: 'struct mem_cgroup_per_node' has no member named 'shrinker_map'
>>
>> This?
>>
>> --- a/include/linux/memcontrol.h~mm-shrinker-make-shrinker-not-depend-on-memcg-kmem-fix
>> +++ a/include/linux/memcontrol.h
>> @@ -128,7 +128,7 @@ struct mem_cgroup_per_node {
>>  
>>  	struct mem_cgroup_reclaim_iter	iter[DEF_PRIORITY + 1];
>>  
>> -#ifdef CONFIG_MEMCG_KMEM
>> +#ifdef CONFIG_MEMCG
>>  	struct memcg_shrinker_map __rcu	*shrinker_map;
>>  #endif
>>  	struct rb_node		tree_node;	/* RB tree node */
>> @@ -1272,6 +1272,7 @@ static inline bool mem_cgroup_under_sock
>>  
>>  struct kmem_cache *memcg_kmem_get_cache(struct kmem_cache *cachep);
>>  void memcg_kmem_put_cache(struct kmem_cache *cachep);
>> +extern int memcg_expand_shrinker_maps(int new_id);
>>  
>>  #ifdef CONFIG_MEMCG_KMEM
>>  int __memcg_kmem_charge(struct page *page, gfp_t gfp, int order);
>> @@ -1339,8 +1340,6 @@ static inline int memcg_cache_id(struct
>>  	return memcg ? memcg->kmemcg_id : -1;
>>  }
>>  
>> -extern int memcg_expand_shrinker_maps(int new_id);
>> -
>>  extern void memcg_set_shrinker_bit(struct mem_cgroup *memcg,
>>  				   int nid, int shrinker_id);
>>  #else
>> _
>>
> 
> Now I see this:
> 
> ld: mm/vmscan.o: in function `prealloc_shrinker':
> vmscan.c:(.text+0x3090): undefined reference to `memcg_expand_shrinker_maps'
> 
> 
> And for the record, I reported this yesterday on mmotm:
> https://lore.kernel.org/lkml/9cbdb785-b51d-9419-6b9a-ec282a4e4fa2@infradead.org/
> 
> Reported-by: Randy Dunlap <rdunlap@infradead.org>
> 
> 
> thanks,

I did a similar change as Andrew's, but to mm/memcontrol.c, but that just
causes duplicate function definition errors from <linux/memcontrol.h> because
it has stubs for some functions that are now being built.


-- 
~Randy


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-07-06  2:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-05 13:09 [linux-next:master 12342/12641] mm/vmscan.c:205:7: error: implicit declaration of function 'memcg_expand_shrinker_maps'; did you mean 'memcg_set_shrinker_bit'? kbuild test robot
2019-07-05 21:20 ` Andrew Morton
2019-07-05 22:16   ` Randy Dunlap
2019-07-06  2:14     ` Randy Dunlap
2019-07-06  2:13   ` Randy Dunlap

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).