Details
-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
9223372036854775807
Description
When filemap_fault finds a page which is already locked, it returns VM_FAULT_RETRY. This can happen quite commonly if a page is being read in by readahead when we go to read it. This means we never call readpage for that fault.
The fault will generally be retried from the kernel (outside of Lustre), which looks like a brand new mmap fault to Lustre, so that's fine, but this can confuse readahead, because we will call ll_ras_enter, but never call ras_update. This throws off the readahead algorithm.
The answer is to move the ll_ras_enter call in to ll_readpage. This depends on the mmap readahead simplification from LU-15516.