readahead: fault retry breaks mmap file read random detection
.fault now can retry. The retry can break state machine of .fault. In filemap_fault, if page is miss, ra->mmap_miss is increased. In the second try, since the page is in page cache now, ra->mmap_miss is decreased. And these are done in one fault, so we can't detect random mmap file access. Add a new flag to indicate .fault is tried once. In the second try, skip ra->mmap_miss decreasing. The filemap_fault state machine is ok with it. I only tested x86, didn't test other archs, but looks the change for other archs is obvious, but who knows :) Signed-off-by:Shaohua Li <shaohua.li@fusionio.com> Cc: Rik van Riel <riel@redhat.com> Cc: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
Showing
- arch/arm/mm/fault.c 1 addition, 0 deletionsarch/arm/mm/fault.c
- arch/avr32/mm/fault.c 1 addition, 0 deletionsarch/avr32/mm/fault.c
- arch/cris/mm/fault.c 1 addition, 0 deletionsarch/cris/mm/fault.c
- arch/hexagon/mm/vm_fault.c 1 addition, 0 deletionsarch/hexagon/mm/vm_fault.c
- arch/ia64/mm/fault.c 1 addition, 0 deletionsarch/ia64/mm/fault.c
- arch/m68k/mm/fault.c 1 addition, 0 deletionsarch/m68k/mm/fault.c
- arch/microblaze/mm/fault.c 1 addition, 0 deletionsarch/microblaze/mm/fault.c
- arch/mips/mm/fault.c 1 addition, 0 deletionsarch/mips/mm/fault.c
- arch/openrisc/mm/fault.c 1 addition, 0 deletionsarch/openrisc/mm/fault.c
- arch/powerpc/mm/fault.c 1 addition, 0 deletionsarch/powerpc/mm/fault.c
- arch/s390/mm/fault.c 1 addition, 0 deletionsarch/s390/mm/fault.c
- arch/sh/mm/fault.c 1 addition, 0 deletionsarch/sh/mm/fault.c
- arch/sparc/mm/fault_32.c 1 addition, 0 deletionsarch/sparc/mm/fault_32.c
- arch/sparc/mm/fault_64.c 1 addition, 0 deletionsarch/sparc/mm/fault_64.c
- arch/tile/mm/fault.c 1 addition, 0 deletionsarch/tile/mm/fault.c
- arch/um/kernel/trap.c 1 addition, 0 deletionsarch/um/kernel/trap.c
- arch/x86/mm/fault.c 1 addition, 0 deletionsarch/x86/mm/fault.c
- arch/xtensa/mm/fault.c 1 addition, 0 deletionsarch/xtensa/mm/fault.c
- include/linux/mm.h 1 addition, 0 deletionsinclude/linux/mm.h
- mm/filemap.c 2 additions, 2 deletionsmm/filemap.c
Loading
Please register or sign in to comment