aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
authorfujunjie <fujunjie1@qq.com>2026-04-28 01:59:44 +0000
committerAndrew Morton <akpm@linux-foundation.org>2026-05-28 21:05:06 -0700
commit9b0fcac3cfe7ffeb3da78bfee765072861c81ce2 (patch)
tree42dcec239b4cc7ef332022b6f999fc2ed3d259c0 /mm
parent0b9c0aeba938aad9964f855df00bf929b83a484d (diff)
downloadlinux-next-history-9b0fcac3cfe7ffeb3da78bfee765072861c81ce2.tar.gz
mm/filemap: do not count FAULT_FLAG_TRIED retries as mmap hits
A fault that starts synchronous mmap readahead can return VM_FAULT_RETRY after dropping mmap_lock. The retry may then map the folio brought in by that same miss. Do not let this retry decrement mmap_miss. The retry still maps the folio from the page cache; it just does not count as a useful mmap readahead hit. Link: https://lore.kernel.org/tencent_22E6B8849EC1141FE7773C64467E6F1E2C09@qq.com Signed-off-by: fujunjie <fujunjie1@qq.com> Reviewed-by: Jan Kara <jack@suse.cz> Reviewed-by: Vishal Moola <vishal.moola@gmail.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Roman Gushchin <roman.gushchin@linux.dev> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/filemap.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/filemap.c b/mm/filemap.c
index 816eabb22e19c..ab34cab2416a4 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -3937,6 +3937,7 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf,
* we can stop read-ahead.
*/
if ((map_ret & VM_FAULT_NOPAGE) &&
+ !(vmf->flags & FAULT_FLAG_TRIED) &&
!folio_test_workingset(folio)) {
unsigned short mmap_miss;