Re: [RFC] page fault retry with NOPAGE_RETRY

Andrew Morton
2006-09-20T03:05:33Z

On Wed, 20 Sep 2006 11:57:09 +1000
Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:

> > You forget that the point of this optimisation is to undo mmap_sem while
> > waiting on the disk IO. Once we've done that we cannot go looking at ptes
> > or vmas: another thread could have munapped the whole lot or anything.
> > (And we always need to be afraid of use_mm()..)
>
> Wait wait .. .we don't need to have the mmap sem to -look- at a PTE.

The pte resides in a pagetable page. Once we've dropped mmap_sem, that
pagetable page might not be there any more: munmap() might have freed it.
We have to retake mmap_sem, do a find_vma() and a new pagetable walk.

There are some optimisations we could make to avoid all of that in the
common case, but this is the conceptual behaviour.