[PATCH v2 5/5] mm/filemap: Avoid retrying page faults on uptodate folios in filemap faults

From: Barry Song (Xiaomi)

Date: Thu Apr 30 2026 - 00:05:54 EST


For uptodate folios, we are not waiting on I/O. We should
be able to acquire the folio lock shortly, so there is no
need to drop per-vma locks and perform a full PF retry.

Signed-off-by: Barry Song (Xiaomi) <baohua@xxxxxxxxxx>
---
mm/filemap.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/mm/filemap.c b/mm/filemap.c
index b532d6cbafc8..0d2f6af5d0fe 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -3533,6 +3533,13 @@ vm_fault_t filemap_fault(struct vm_fault *vmf)
}
}

+ /*
+ * If the folio is uptodate, we are likely only waiting for
+ * another concurrent PTE mapping to complete, which should
+ * be brief. No need to drop the lock and retry the fault.
+ */
+ if (folio_test_uptodate(folio))
+ vmf->flags &= ~FAULT_FLAG_ALLOW_RETRY;
if (!lock_folio_maybe_drop_mmap(vmf, folio, &fpin))
goto out_retry;

--
2.39.3 (Apple Git-146)