[PATCH v2 4/5] mm: Don't retry page fault if folio is uptodate during swap-in
Matthew Wilcox
willy at infradead.org
Fri May 1 09:11:03 PDT 2026
On Thu, Apr 30, 2026 at 01:35:30PM +0100, Matthew Wilcox wrote:
> On Thu, Apr 30, 2026 at 12:04:26PM +0800, Barry Song (Xiaomi) wrote:
> > If we are waiting for long I/O to complete, it makes sense to
> > avoid holding locks for too long. However, if the folio is
> > uptodate, we are likely only waiting for a concurrent PTE
> > update to finish. Retrying the entire page fault seems
> > excessive.
>
> I think the idea is good, but the implementation is misplaced.
> The check for folio_uptodate() should be inside folio_lock_or_retry()
> rather than tampering with FAULT_FLAG_ALLOW_RETRY in its caller.
Actually it needs to be a little more complex than this. We
sometimes wait for writeback while holding the folio lock, and
that's a similar latency to reads (or with cheap NAND, maybe longer!)
So I think the test needs to be:
if (folio_test_uptodate(folio) && !folio_test_writeback(folio))
More information about the linux-arm-kernel
mailing list