Re: [PATCH 4/4] oom-reaper: use madvise_dontneed() logic to decide if unmap the VMA

From: kbuild test robot
Date: Mon Dec 19 2016 - 21:22:45 EST


Hi Kirill,

[auto build test WARNING on mmotm/master]
[also build test WARNING on v4.9 next-20161219]
[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/Kirill-A-Shutemov/mm-drop-zap_details-ignore_dirty/20161220-092938
base: git://git.cmpxchg.org/linux-mmotm.git master
config: x86_64-randconfig-x004-201651 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

All warnings (new ones prefixed by >>):

In file included from include/asm-generic/bug.h:4:0,
from arch/x86/include/asm/bug.h:35,
from include/linux/bug.h:4,
from include/linux/mmdebug.h:4,
from include/linux/mm.h:8,
from include/linux/mman.h:4,
from mm/madvise.c:8:
mm/madvise.c: In function 'madvise_dontneed':
mm/madvise.c:476:7: error: implicit declaration of function 'can_madv_dontneed_vma' [-Werror=implicit-function-declaration]
if (!can_madv_dontneed_vma(vma))
^
include/linux/compiler.h:149:30: note: in definition of macro '__trace_if'
if (__builtin_constant_p(!!(cond)) ? !!(cond) : \
^~~~
>> mm/madvise.c:476:2: note: in expansion of macro 'if'
if (!can_madv_dontneed_vma(vma))
^~
cc1: some warnings being treated as errors

vim +/if +476 mm/madvise.c

460 *
461 * NB: This interface discards data rather than pushes it out to swap,
462 * as some implementations do. This has performance implications for
463 * applications like large transactional databases which want to discard
464 * pages in anonymous maps after committing to backing store the data
465 * that was kept in them. There is no reason to write this data out to
466 * the swap area if the application is discarding it.
467 *
468 * An interface that causes the system to free clean pages and flush
469 * dirty pages is already available as msync(MS_INVALIDATE).
470 */
471 static long madvise_dontneed(struct vm_area_struct *vma,
472 struct vm_area_struct **prev,
473 unsigned long start, unsigned long end)
474 {
475 *prev = vma;
> 476 if (!can_madv_dontneed_vma(vma))
477 return -EINVAL;
478
479 zap_page_range(vma, start, end - start);
480 return 0;
481 }
482
483 /*
484 * Application wants to free up the pages and associated backing store.

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

Attachment: .config.gz
Description: application/gzip