Re: [PATCH] memcg: localize memcg_kmem_enabled() check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Shakeel,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v4.20 next-20190102]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Shakeel-Butt/memcg-localize-memcg_kmem_enabled-check/20190103-120255
config: x86_64-randconfig-x011-201900 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   mm/page_alloc.c: In function 'free_pages_prepare':
   mm/page_alloc.c:1059:3: error: implicit declaration of function '__memcg_kmem_uncharge'; did you mean 'memcg_kmem_uncharge'? [-Werror=implicit-function-declaration]
      __memcg_kmem_uncharge(page, order);
      ^~~~~~~~~~~~~~~~~~~~~
      memcg_kmem_uncharge
   In file included from include/asm-generic/bug.h:5:0,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:9,
                    from mm/page_alloc.c:18:
   mm/page_alloc.c: In function '__alloc_pages_nodemask':
   mm/page_alloc.c:4553:15: error: implicit declaration of function '__memcg_kmem_charge'; did you mean 'memcg_kmem_charge'? [-Werror=implicit-function-declaration]
         unlikely(__memcg_kmem_charge(page, gfp_mask, order) != 0)) {
                  ^
   include/linux/compiler.h:58:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> mm/page_alloc.c:4552:2: note: in expansion of macro 'if'
     if (memcg_kmem_enabled() && (gfp_mask & __GFP_ACCOUNT) && page &&
     ^~
   include/linux/compiler.h:48:24: note: in expansion of macro '__branch_check__'
    #  define unlikely(x) (__branch_check__(x, 0, __builtin_constant_p(x)))
                           ^~~~~~~~~~~~~~~~
>> mm/page_alloc.c:4553:6: note: in expansion of macro 'unlikely'
         unlikely(__memcg_kmem_charge(page, gfp_mask, order) != 0)) {
         ^~~~~~~~
   cc1: some warnings being treated as errors

vim +/if +4552 mm/page_alloc.c

9cd755587 Mel Gorman       2017-02-24  4493  
9cd755587 Mel Gorman       2017-02-24  4494  /*
9cd755587 Mel Gorman       2017-02-24  4495   * This is the 'heart' of the zoned buddy allocator.
9cd755587 Mel Gorman       2017-02-24  4496   */
9cd755587 Mel Gorman       2017-02-24  4497  struct page *
04ec6264f Vlastimil Babka  2017-07-06  4498  __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid,
04ec6264f Vlastimil Babka  2017-07-06  4499  							nodemask_t *nodemask)
9cd755587 Mel Gorman       2017-02-24  4500  {
9cd755587 Mel Gorman       2017-02-24  4501  	struct page *page;
9cd755587 Mel Gorman       2017-02-24  4502  	unsigned int alloc_flags = ALLOC_WMARK_LOW;
f19360f01 Tetsuo Handa     2017-09-08  4503  	gfp_t alloc_mask; /* The gfp_t that was actually used for allocation */
9cd755587 Mel Gorman       2017-02-24  4504  	struct alloc_context ac = { };
9cd755587 Mel Gorman       2017-02-24  4505  
c63ae43ba Michal Hocko     2018-11-16  4506  	/*
c63ae43ba Michal Hocko     2018-11-16  4507  	 * There are several places where we assume that the order value is sane
c63ae43ba Michal Hocko     2018-11-16  4508  	 * so bail out early if the request is out of bound.
c63ae43ba Michal Hocko     2018-11-16  4509  	 */
c63ae43ba Michal Hocko     2018-11-16  4510  	if (unlikely(order >= MAX_ORDER)) {
c63ae43ba Michal Hocko     2018-11-16  4511  		WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN));
c63ae43ba Michal Hocko     2018-11-16  4512  		return NULL;
c63ae43ba Michal Hocko     2018-11-16  4513  	}
c63ae43ba Michal Hocko     2018-11-16  4514  
9cd755587 Mel Gorman       2017-02-24  4515  	gfp_mask &= gfp_allowed_mask;
f19360f01 Tetsuo Handa     2017-09-08  4516  	alloc_mask = gfp_mask;
04ec6264f Vlastimil Babka  2017-07-06  4517  	if (!prepare_alloc_pages(gfp_mask, order, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags))
9cd755587 Mel Gorman       2017-02-24  4518  		return NULL;
9cd755587 Mel Gorman       2017-02-24  4519  
a380b40ab Huaisheng Ye     2018-06-07  4520  	finalise_ac(gfp_mask, &ac);
5bb1b1697 Mel Gorman       2016-05-19  4521  
6bb154504 Mel Gorman       2018-12-28  4522  	/*
6bb154504 Mel Gorman       2018-12-28  4523  	 * Forbid the first pass from falling back to types that fragment
6bb154504 Mel Gorman       2018-12-28  4524  	 * memory until all local zones are considered.
6bb154504 Mel Gorman       2018-12-28  4525  	 */
0a79cdad5 Mel Gorman       2018-12-28  4526  	alloc_flags |= alloc_flags_nofragment(ac.preferred_zoneref->zone, gfp_mask);
6bb154504 Mel Gorman       2018-12-28  4527  
5117f45d1 Mel Gorman       2009-06-16  4528  	/* First allocation attempt */
a9263751e Vlastimil Babka  2015-02-11  4529  	page = get_page_from_freelist(alloc_mask, order, alloc_flags, &ac);
4fcb09711 Mel Gorman       2016-05-19  4530  	if (likely(page))
4fcb09711 Mel Gorman       2016-05-19  4531  		goto out;
4fcb09711 Mel Gorman       2016-05-19  4532  
21caf2fc1 Ming Lei         2013-02-22  4533  	/*
7dea19f9e Michal Hocko     2017-05-03  4534  	 * Apply scoped allocation constraints. This is mainly about GFP_NOFS
7dea19f9e Michal Hocko     2017-05-03  4535  	 * resp. GFP_NOIO which has to be inherited for all allocation requests
7dea19f9e Michal Hocko     2017-05-03  4536  	 * from a particular context which has been marked by
7dea19f9e Michal Hocko     2017-05-03  4537  	 * memalloc_no{fs,io}_{save,restore}.
21caf2fc1 Ming Lei         2013-02-22  4538  	 */
7dea19f9e Michal Hocko     2017-05-03  4539  	alloc_mask = current_gfp_context(gfp_mask);
c9ab0c4fb Mel Gorman       2015-11-06  4540  	ac.spread_dirty_pages = false;
91fbdc0f8 Andrew Morton    2015-02-11  4541  
4741526b8 Mel Gorman       2016-05-19  4542  	/*
4741526b8 Mel Gorman       2016-05-19  4543  	 * Restore the original nodemask if it was potentially replaced with
4741526b8 Mel Gorman       2016-05-19  4544  	 * &cpuset_current_mems_allowed to optimize the fast-path attempt.
4741526b8 Mel Gorman       2016-05-19  4545  	 */
e47483bca Vlastimil Babka  2017-01-24  4546  	if (unlikely(ac.nodemask != nodemask))
4741526b8 Mel Gorman       2016-05-19  4547  		ac.nodemask = nodemask;
16096c25b Vlastimil Babka  2017-01-24  4548  
a9263751e Vlastimil Babka  2015-02-11  4549  	page = __alloc_pages_slowpath(alloc_mask, order, &ac);
11e33f6a5 Mel Gorman       2009-06-16  4550  
4fcb09711 Mel Gorman       2016-05-19  4551  out:
c4159a75b Vladimir Davydov 2016-08-08 @4552  	if (memcg_kmem_enabled() && (gfp_mask & __GFP_ACCOUNT) && page &&
3d5b7b20b Shakeel Butt     2019-01-02 @4553  	    unlikely(__memcg_kmem_charge(page, gfp_mask, order) != 0)) {
4949148ad Vladimir Davydov 2016-07-26  4554  		__free_pages(page, order);
4949148ad Vladimir Davydov 2016-07-26  4555  		page = NULL;
4949148ad Vladimir Davydov 2016-07-26  4556  	}
4949148ad Vladimir Davydov 2016-07-26  4557  
4fcb09711 Mel Gorman       2016-05-19  4558  	trace_mm_page_alloc(page, order, alloc_mask, ac.migratetype);
4fcb09711 Mel Gorman       2016-05-19  4559  
11e33f6a5 Mel Gorman       2009-06-16  4560  	return page;
^1da177e4 Linus Torvalds   2005-04-16  4561  }
d239171e4 Mel Gorman       2009-06-16  4562  EXPORT_SYMBOL(__alloc_pages_nodemask);
^1da177e4 Linus Torvalds   2005-04-16  4563  

:::::: The code at line 4552 was first introduced by commit
:::::: c4159a75b64c0e67caededf4d7372c1b58a5f42a mm: memcontrol: only mark charged pages with PageKmemcg

:::::: TO: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux